function storyData($http, $q) {
var URL = 'stories.json';
var storyCache = [];
this.getStories = function() {
var deferred = $q.defer();
alert(URL);
$http({method: 'GET', url: URL})
.success(function (data, status, headers, config) {
storyCache = data;
alert(storyCache); //correct data appears in the alert window, but this doesn't set the instance storyCache variable for some reason
deferred.resolve(data);
})
.error(function (data, status, headers, config) {
deferred.reject(status);
});
return deferred.promise;
};
this.stories = function() {
return storyCache;
}
}
我的应用 -
'use strict';
var angularApp = angular.module('ccsApp', ['ngRoute', 'ngAnimate', 'ui.bootstrap']);
angularApp.config(['$routeProvider',
function($routeProvider) {
$routeProvider.
when('/', {
templateUrl: 'stories.html',
controller: 'StoryController as StoryCtrl',
resolve: {
stories: function(storyData) {
return storyData.getStories();
}
}
})
.otherwise({
redirectTo: '/'
});
}
]);
在我的控制器中,我没有注入"故事"来自routeProvider的值,以便我可以使用我的服务。
为什么我无法在$ http方法中更改storyCache?我确信这是非常简单的事情,但我的研究并没有让我得到答案。提前感谢您的帮助。
异步。这方面工作正常,不是问题。我确保通过使用routeProvider上的resolve对象来获取数据。另外,我确保在deferred.resolve(data)方法执行之前通过在其上发出警报来获取数据。我没有解决方案,但在使用异步时出错。也不是解决方案。