你可以采取的一种方法是向服务器注入一个服务器,该服务器将有一个函数返回这个数据的承诺。这是有利的,因为您可以在“应用程序范围内”注入并重新使用此服务,并且还可以缓存性能响应。下面是一个例子实施...
var app = angular.module('app', []);
app.service('DataService', ['$http', function ($http) {
this.getData = function(){
return $http.get('data.json', { cache: true })
}
}]);
app.controller('ctrl', ['$scope', 'DataService', function($scope, DataService) {
DataService.getData().then(function(response) {
console.log(response.data);
});
}]);
Plunker Link - 演示
要留神,如果是一个异步调用,因为此调用.then
的唯一的事。
另一种方法可以做到这一点,这是在这里做一些假设,可能包括以下情形:假设这个“不变”的数据是像一些配置数据,并希望得到你的手在这个无稍后解决控制器中的异步承诺。您可以在最初检索这些数据后手动引导您的应用程序,并提供便利知道您将预先获得此数据。
要做到这一点,让我们创建一个名为AngularJS constantdata
var app = angular.module('app', []);
(function() {
var initInjector = angular.injector(['ng']);
var $http = initInjector.get('$http');
$http.get('data.json').then(
function (response) {
app.constant('data', response.data);
angular.element(document).ready(function() {
angular.bootstrap(document, ['app']);
});
}
);
}());
app.controller('ctrl', ['$scope', 'data', function($scope, data) {
console.log(data)
}]);
你可以看到这个被简化,至少在我们的控制水平。我们只是注入data
作为依赖关系,其中已经已经为我们解决了我们的$http.get()
。
Plunker Link - 演示 - 常数
进行快速访问 - 使用本地存储 – nikhil
从文件中获取你的数据只有一次,并通过使用服务维护它的程序。这是你可以采取的最好的方法。 – simon
谢谢@simon。我了解了这些服务,他们非常有用。 –