[英]Meteor update with $push to an array that doesn't already exist on a single record
[英]AngularJS doesn't push new record into the array
我创建一个新记录,此记录已成功添加到数据库中。 那很好。 但是问题在于它不会更新现有记录的列表-意味着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"…}
可通过response.id.$oid
访问ID
。
这对我有用...
p.$save().then(function(response){
$scope.posts.push(response.id)
});
角扩展不保存列表/数组。 它用新项目扩展了旧列表/数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.