2014-02-05 102 views
8

我曾經使用RequireJS和Backbone,並使用requirejs/textrequirejs-plugins加載我通常用於配置的本地json文件。在AngularJS中讀取本地文件

AngularJS是如何實現的?

似乎每個人都建議使用$ http,但這是唯一的方法嗎? 如果我有20個配置文件,我真的需要撥打20個電話嗎?

也許類似ng-constant是「首選」的方式?

+0

20配置文件!?這是很多配置! –

+0

是的。哦,它主要是標籤和類似的東西,或者像一大串(固定)匯率。 – user1241320

回答

8

這就是我所做的。但它使用$ http,所以我希望有人有更好的解決方案。

app.js:

var myModule = angular.module('myApp', []); 

myModule.config(function($routeProvider, $locationProvider) { 
    $routeProvider.when('/', { 
     templateUrl: 'html/home.html', 
     controller: 'MainCtrl as ctrl', 
     resolve: { 
      initializeData: function($q, $timeout, myService) { 
       return myService.promiseToHaveData(); 
      } 
     } 
    }); 
}); 

myService.js:

var myModule = angular.module('myApp'); 

myModule.service('myService', function($http, $q) { 
    var _this = this; 

    this.promiseToHaveData = function() { 
     var defer = $q.defer(); 

     $http.get('someFile.json') 
      .success(function(data) { 
       angular.extend(_this, data); 
       defer.resolve(); 
      }) 
      .error(function() { 
       defer.reject('could not find someFile.json'); 
      }); 

     return defer.promise; 
    } 
}); 

然後,我可以在任何地方注入爲myService,這將有來自JSON文件中的所有領域。

我想或者你可以只讓你上傳.json文件.js文件,讓他們暴露一個全局變量,並在您的index.html

7

你可以使用jQuery的getJSON函數引用它們?

E.g類似:

$.getJSON("config-1.json", function(data) { 
    // do whatever you want 
}); 
+0

不適合我 –