Javascript AngularJS:从工厂获取数据并更新控制器范围和视图
大家好,我真的需要帮助和建议这个工厂和控制器的问题,我有Javascript AngularJS:从工厂获取数据并更新控制器范围和视图,javascript,angularjs,angularjs-service,angularjs-controller,angular-promise,Javascript,Angularjs,Angularjs Service,Angularjs Controller,Angular Promise,大家好,我真的需要帮助和建议这个工厂和控制器的问题,我有 我有一个从服务器获取数据的工厂 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
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;
}]);
但是,在服务器响应之后,我的视图不会更新,$scope.feed也不会更新。非常感谢您的帮助因为您正在进行异步
$http
调用,所以该数据在该实例中不可用。当ajax调用成功时,它将可用。您需要使用。然后
函数,该函数将创建承诺链,并在时执行函数。success
函数返回数据
控制器
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
});
}
]);
我认为您应该将回调传递给getFeeds,在success内部调用它,并在那里更新您的$scope.feeds。
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
});
}
]);