假设我有这个对象数组:
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
内的帖子?)。
答案 0 :(得分:1)
angular.forEach(ctrl.posts, function(post, index){
if(post.id == myId){
post.likes++;
}
});
答案 1 :(得分:0)
您可以使用lodash和地图功能:lodash map function
答案 2 :(得分:0)
您可以使用纯javscript。执行以下操作:
var postIndex = ctrl.posts.map(function(item) {return item.id; }).indexOf(myId);
var foundPost = ctrl.posts[postIndex];
&#13;