大家好,我真的需要有关此工厂和控制器问题的帮助和建议。
我有一个从服务器获取数据的工厂
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也没有更新。非常感谢您的帮助
答案 0 :(得分:1)
当你正在进行异步.then
调用时,那个数据在那个时刻就不可用了。当ajax调用成功时,它将可用。您需要使用.success
函数创建一个promise链,并在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
});
}
]);
函数返回数据时执行函数。
<强>控制器强>
browser.actions().click($('.portal_element_image')).perform()