Javascript AngularJS没有';t将新记录推入数组
我创建了一个新记录,该记录已成功添加到数据库中。那很好。 但问题是它不会更新现有记录的列表-这意味着Javascript AngularJS没有';t将新记录推入数组,javascript,ruby-on-rails,ruby,angularjs,push,Javascript,Ruby On Rails,Ruby,Angularjs,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));
推送功能似乎不起作用
这在控制器内部:
$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()代码>在控制器的末尾,但它没有帮助-新记录仍然没有添加到当前的帖子列表中
这可能是什么原因造成的?我在这里发现了类似的话题,但这并没有帮助我解决这个问题
多谢各位
编辑:
我在console.log($scope.posts)中看到代码>新帖子,它只是不出现在帖子列表中
EDIT2:
我还尝试了$scope.$apply()在执行push
命令后执行code>,但它会导致以下错误消息:
Error: [$rootScope:inprog] $digest already in progress
EDIT3:
我发现当我试图删除一条记录时,列表也不会更新(只有在刷新之后)
EDIT4:
当我添加一条新记录时,JS中是这个输出(新记录已正确保存,只是没有在所有项目所在的列表中更新):
ID
可以通过response.ID.$oid
访问,这对我很有用
p.$save().then(function(response){
$scope.posts.push(response.id)
});
角度延伸不保存列表/数组。
它使用新项扩展旧列表/数组。扩展不应该是angular.extend(p,{id:response.id})
?您需要提供更多的代码。Angular使用标准的js数组push,它工作得非常好。在将p的o扩展部分推到POST中之前,请记录以查看p是什么printed@charlietfl-谢谢,我尝试了这个选项,但不幸的是没有帮助。@MohammadJavad Seyyedi-p
包含一个对象-{id:object,title:“asdgasdhc”,body:“cc”,starred:null,created_:“2015-10-26T18:41:52.686Z”…}
-应该没问题。该死,还是没什么。它仍然没有将新记录添加到现有记录列表中。
p.$save().then(function(response){
$scope.posts.push(response.id)
});