繁体   English   中英

AngularJS不会将新记录推入数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM