如果我拥有它的id值,如何获取和更新数组中的AngularJS对象?

时间:2015-11-21 23:14:46

标签: javascript arrays angularjs

假设我有这个对象数组:

ctrl.posts = [Object, Object, Object]

每个对象看起来都类似于:

{id:1, post:"post", likes:2}

这些对象绑定到前端,如下所示:

<div ng-repeat="post in ctrl.posts">
    <span ng-bind="post.post"></span>
    <span ng-bind="post.likes"></span>
</div>

从后端,我收到函数x的id,如下所示:

functionx(id)

我需要做的是更新ctrl.posts id=id中的项目(我需要做的更新是将对象&#39; s likes增加1)。到目前为止,我可以得到这样的帖子:

self.post = $filter('filter')(self.posts, {id: id}, true);
self.post.likes = self.post.likes + 1;

但是在得到这个之后我还有什么想法? (我目前有self.post是一个变量。我现在如何用ctrl.posts替换self.post内的帖子?)。

3 个答案:

答案 0 :(得分:1)

angular.forEach(ctrl.posts, function(post, index){
    if(post.id == myId){
       post.likes++;
    }
});

答案 1 :(得分:0)

您可以使用lodash和地图功能:lodash map function

答案 2 :(得分:0)

您可以使用纯javscript。执行以下操作:

&#13;
&#13;
var postIndex = ctrl.posts.map(function(item) {return item.id; }).indexOf(myId);
var foundPost = ctrl.posts[postIndex];
&#13;
&#13;
&#13;