【发布时间】:2015-05-22 22:29:43
【问题描述】:
请帮忙!我正在为此拉头发。我为此尝试了很多教程,但似乎无法让任何东西远程工作。
用户可以在页面上添加/删除/更新用户信息,并且我希望在他们执行其中一项操作时刷新它。所有操作都写入数据库很好,我在取回值方面取得了各种成功,但我无法让视图实时更新。
我不能使用 $scope.$apply(); $digest 已经在处理中。我觉得我只是缺少一些主要的关键。
服务
angular.module('userlistFactory', [])
.service('Data', function($http){
this.list = function(){
return $http.get('.../getUsers.php', {cache: true})
.then(function(data){
return data.data;
});
}
控制器
userlistControllers.controller('UserListCtrl', ['$scope', 'Data', function ($scope, Data){
Data.list().then(function (data) { // Populates the page the first time through
$scope.users = data;
})
$scope.$watch('Data.list()', function(newValue){ // At this point, I don't understand
$scope.users = newValue;
}, true);
查看
<tr ng-repeat-start="user in users| filter:query | orderBy:'id'">
<td><a href="#/profile/{{user.id}}">{{user.id}}</a></td>
<td>{{user.firstname}}</td> // etc...
感谢阅读。
【问题讨论】:
-
$scope.$watch('Data.list()'有什么用?你怎么知道数据被插入/更新了? -
您的添加/更新/删除功能是否也在服务中?似乎如果您的列表功能正在工作,您可以在控制器中执行类似 Data.add(item).then(function() { Data.list(); } ) 的操作。您的手表不会让列表保持刷新。
标签: javascript angularjs angularjs-scope