我正在使用onsen UI(angularjs)+ cordova开发应用程序。 所以我有一个评论页面,每个评论都有一个按钮"喜欢"。 当用户已经喜欢该页面时,我必须显示一个不同的按钮。 然后我创建了一个名为" active"的CSS类。 但是因为我可以使用这个类,我应该在角度表达式中创建一个循环,因为我从后端返回一个javascript对象,每个注释都有用户交互。例如:
该页面有3条评论:id 1,id 2和id 3 用户喜欢评论编号1和3。 返回的对象是: [object] [0] id => 1, [对象] [1] id => 3
然后我用angularjs循环显示注释,如下所示:
ng-repeat="comment in comments | limitTo: 6"
好的,现在让我们尝试显示已经"喜欢"的不同按钮。 (如果用户没有"喜欢"爱好。
<button class="button btnice {{ event.event_id in interactions ? 'active' : 'normal'}}">
有可能吗?如果没有,最好的方法是什么?
答案 0 :(得分:3)
这绝对可能:
在您的HTML中:
<button class="button btnice" ng-class="isLiked(commentId) ? 'active' : 'normal'">
然后,向控制器添加isLiked
功能:
var likedComments = [{interaction_id: "2", value: "1", comment_id: 1}, {...}];
$scope.isLiked = function(commentId){
return likedComments.some(function(interaction){
return interaction.comment_id === commentId;
});
};
这应该可以解决问题。如果true
对象数组包含一个或多个likedComments
的对象,则返回comment_id === commentId
。