我创建了一条新记录,这条记录成功添加到数据库中。非常好。
但问题是它不会更新现有记录列表 - 意味着push
函数似乎不起作用。
这是在控制器内部:
$scope.posts = Posts.query();
...
$scope.saveForm = function(post) {
var p = new Post(post);
p.$save(function (response) {
$scope.posts.push(angular.extend(p, response.id));
console.log('saved');
console.log(response.id);
});
};
我尝试仅使用push()
而不使用angular.extend()
,还试图在控制器的末尾添加$scope.posts = Posts.query();
,但它没有帮助 - 新记录仍然是没有添加到当前的帖子列表中。
可能是什么原因引起的?我在SO上找到了类似的主题,但它没有帮助我解决这个问题。
谢谢。
修改
我在console.log($scope.posts);
新帖子中看到,它只是没有出现在帖子列表中。
EDIT2:
我在$scope.$apply();
命令之后也尝试push
,但它导致了以下错误消息:
Error: [$rootScope:inprog] $digest already in progress
EDIT3: 我发现当我尝试删除记录时,列表也不会更新(仅在刷新后)。
EDIT4: 当我添加一条新记录时,在JS中是这个输出(新记录,正确保存,只是在列表中没有更新所有项目):
Resource {id: Object, title: "hohohohooho", body: null, starred: null, created_at: "2015-10-27T04:00:06.943Z"…}
ID
可以response.id.$oid
访问。
答案 0 :(得分:0)
这对我有用......
p.$save().then(function(response){
$scope.posts.push(response.id)
});
答案 1 :(得分:0)
Angular extend不会保存列表/数组。 它使用新项扩展旧列表/数组。