AngularJS:从工厂获取数据并更新控制器范围和视图
AngularJS : Getting data from Factory and update Controller scope and view
大家好,对于我遇到的这个工厂和控制器问题,我真的需要帮助和建议。
我有一个从服务器获取数据的工厂
sp.factory('homeFeed',['$window','$http','auth',function($window,$http,auth){
var url = auth.url;
var version = auth.version;
var HomeFeed = {};
HomeFeed.getFeeds = function(user){
//setting variable for get request on home feed
var req = {
method: 'GET',
url: url + version + '/Feed',
headers: {
'Content-Type': 'application/json; charset=utf-8',
'Authorization': 'Bearer ' + token
},
}
return $http(req).success(function(res){
return res;
});
};
return HomeFeed;
}]);
控制器--
sp.controller('HomeCtrl',['$scope','homeFeed','$window',function($scope,homeFeed,$window){
//getting all the home feed data
$scope.feeds = homeFeed.getFeeds(JSON.parse($window.localStorage['SP-User']))
}]);
然而,在服务器响应后,我的视图没有更新,$scope.feeds 也没有更新。非常感谢您的帮助
当您进行异步 $http
调用时,该数据在该时间点将不可用。 ajax调用成功后可用。您需要使用 .then
函数,它将创建一个承诺链,并在 .success
函数 returns 一个数据时执行一个函数。
控制器
sp.controller('HomeCtrl',['$scope','homeFeed','$window',
function($scope,homeFeed,$window){
//getting all the home feed data
homeFeed.getFeeds(JSON.parse($window.localStorage['SP-User']))
.then(function(data){
$scope.feeds = data
});
}
]);
大家好,对于我遇到的这个工厂和控制器问题,我真的需要帮助和建议。
我有一个从服务器获取数据的工厂
sp.factory('homeFeed',['$window','$http','auth',function($window,$http,auth){ var url = auth.url; var version = auth.version; var HomeFeed = {}; HomeFeed.getFeeds = function(user){ //setting variable for get request on home feed var req = { method: 'GET', url: url + version + '/Feed', headers: { 'Content-Type': 'application/json; charset=utf-8', 'Authorization': 'Bearer ' + token }, } return $http(req).success(function(res){ return res; }); }; return HomeFeed; }]);
控制器--
sp.controller('HomeCtrl',['$scope','homeFeed','$window',function($scope,homeFeed,$window){ //getting all the home feed data $scope.feeds = homeFeed.getFeeds(JSON.parse($window.localStorage['SP-User'])) }]);
然而,在服务器响应后,我的视图没有更新,$scope.feeds 也没有更新。非常感谢您的帮助
当您进行异步 $http
调用时,该数据在该时间点将不可用。 ajax调用成功后可用。您需要使用 .then
函数,它将创建一个承诺链,并在 .success
函数 returns 一个数据时执行一个函数。
控制器
sp.controller('HomeCtrl',['$scope','homeFeed','$window',
function($scope,homeFeed,$window){
//getting all the home feed data
homeFeed.getFeeds(JSON.parse($window.localStorage['SP-User']))
.then(function(data){
$scope.feeds = data
});
}
]);