【发布时间】:2016-07-29 07:00:56
【问题描述】:
我一直在创建一个用户可以点击赞按钮的论坛。
我想要实现的是,当用户单击一个按钮时,我希望该按钮被着色以显示用户已经喜欢了一条评论,就像 Laracast 一样。
我该怎么做?到目前为止我得到了
<div class="Media--footer background">
<div class="Media--footer__left">
<button @click="addOrRemoveLikes(comment.id,auth_id)"
v-if="auth_id"
>
<-------------- Here -------------------->
<i class="fa fa-thumbs-o-up" :class={'liked': --HERE-- }></i> {{ comment.likes.length }}
</button>
<div v-else>
<button
style="border: 0; background:white;"
@click="promptLogin=true"
>
<i class="fa fa-thumbs-o-up"></i> {{ comment.likes.length }}
</button>
</div>
</div>
<div class="Media--footer__right" v-for="like in comment.likes">
<a href="/@{{ like.user.name }}">{{ like.user.name }}</a>
</div>
</div>
如您所见,我正在使用类绑定,并试图引用一个计算的道具,但我不确定我该怎么做。另外,我正在将 auth_id 传递给组件。所以,似乎我需要像这样比较它
liked: function(){
return this.auth_id == like.user_id
}
但是,问题是我不能将参数(在这种情况下为comment.likes)传递给计算的道具,对吗?我需要遍历“likes”来获取 user_id
对不起,如果我没有说清楚。任何帮助将不胜感激。提前致谢。
----更新-----
我添加了这段代码,但没有运气...为什么这不起作用?
<button @click="addOrRemoveLikes(comment.id,auth_id)"
v-if="auth_id"
>
<i class="fa fa-thumbs-o-up" :class="{'liked': liked(comment.likes)}"></i> {{ comment.likes.length }}
</button>
Vue 实例
liked:function(likes){
var self = this
likes.forEach(function(like){
return self.auth_id == like.user_id
})
}
【问题讨论】:
标签: javascript laravel vue.js