当我转到特定的路由时,我想运行$ http请求并将结果存储在服务中的变量中。从解析到设置服务中的属性值的方法(AngularJS)
所以当我进入'/ users'路由时,我在解析中运行UsersFactory.getUsers()方法。我希望此方法运行$ http请求,返回一些用户,并将这些用户放入UsersFactory中的属性“this.usersObj”。
我想这样做,而不是做一些比较常见的,如:
getUsers: function(UsersFactory) { return UsersFactory.getUsers();)
,并得到在控制器
myApp.controller('UserController', function($scope, getUsers) {
$scope.users = getUsers;
}
所以这里的数据是我的尝试:
路径文件 ...
.when('/users', {
templateUrl: 'templates/page.html',
controller : 'MyCtrl',
resolve: {
getUsers: ['UsersFactory', function(UsersFactory) {
return UsersFactory.getUsers();
// or just: UsersFactory.getUsers();
}]
}
...
厂
myApp.factory('UsersFactory',
['$http', '$q', function($http, $q) {
var self = this;
var getUsers = function() {
function getUsersPromise() {
var deferred = $q.defer();
$http({
method: 'GET',
url: getFlashcardDecksURL
})
.then(function successCallback(response) {
var users = response.data;
deferred.resolve(users);
}, function errorCallback() {
deferred.reject('error msg');
});
return deferred.promise;
}
getUsersPromise()
.then(function successCallback(users) {
self.usersObj = users;
})
.catch(function errorCallback(errorMsg) {
self.errorMsg = errorMsg;
});
};
var usersObj = [];
return {
getUsers: getUsers,
usersObj: usersObj,
}
...
我尝试不起作用。当我尝试访问我的控制器中的UsersFactory.usersObj时,它返回一个空数组。