我試圖在控制器中使用函數來返回數據,以便我可以在整個應用程序中重新使用函數來調用數據以及偶爾刷新它。AngularJS使用控制器中的函數來返回要在ng-repeat中使用的服務的數據
我的代碼看起來是正確的,但在實踐中,每個負載上的瀏覽器都會崩潰。
我能夠通過使用E指令,然後將該元素放置在部分中,但不能完成我所需要的工作。
最後,我願做這樣的事情:
<div ng-repeat="user in getListUsers()">{{ user.somedata }}</div>
我曾嘗試過各種東西,得到它的測試工作,包括把$ HTTP控制器,都具有相同的結果。
如果我在控制器方法分配一個變量,而不是返回的數據,即工作的,但後來我需要調用在控制器的方法,我不希望它在默認情況下運行。只需在需要時在模板中進行呼叫即可。
任何幫助確定爲什麼這不起作用會很好。謝謝。
這裏是我有沒有發揮作用?
elite.controller('UserController', function($scope, User){
$scope.getListUsers = function(){
User.listUsers().then(function(response){
return response.users;
});
}
});
elite.factory('User', function($http){
var User = {
getUser: function(id){
return $http.get('/user/' + id + '/settings').then(function(response){
return response.data;
});
},
listUsers: function(){
return $http.get('/user/').then(function(response){
return response.data;
});
}
}
return User;
});
編輯:
使用下面的一些想法,我能得到我想要的功能,只是在一種不同的方式。基本上,我希望數據按需加載,而不是先行,因爲我試圖將該控制器中的所有用戶邏輯分組,並且我不希望爲每個用戶加載完整的數據。我暫時使用$ rootScope,直到我找出一些範圍繼承問題,因爲使用$ scope.users在模板中以null值結束。我可以看到AJAX調用回來了,但不知道它發生了什麼,但這是另一個問題。
elite.controller('UserController', function($scope, $rootScope, User){
$scope.getListUsers = function(){
User.listUsers().then(function(response){
$rootScope.users = response.users;
});
};
});
而且在導航元素我有這樣的:
<div ng-controller="UserController">
<a ng-href="/#user/list" ng-click="getListUsers()">user list</a>
</div>
退房http://stackoverflow.com/questions/12336897/how-to-loop-through-items-returned-by-a-function-with-ng-repeat – jsplaine
我在前面看到,但問題發生了即使我不使用ng-repeat。例如,如果我只是將該函數放在方括號中,如{{getListUsers()}},瀏覽器仍然崩潰而不是顯示對象。 – Jazzy