Javascript 在angularjs模板中是否还有循环?
我正在开发一个带有onsen UI(angularjs)+cordova的应用程序。 所以我有一个带有评论的页面,每个评论都有一个按钮“like”。 当用户已经喜欢这个页面时,我必须显示一个不同的按钮。 然后我创建了一个名为“active”的CSS类。 但为了使用这个类,我应该在angular表达式中创建一个循环,因为我从后端返回一个javascript对象,每个注释都有用户交互。例如: 该页面有3条注释:ID1、ID2和ID3 用户喜欢1号和3号评论。 返回的对象是: [object][0]id=>1, [object][1]id=>3 然后我用angularjs循环显示注释,如下所示:Javascript 在angularjs模板中是否还有循环?,javascript,angularjs,cordova,onsen-ui,Javascript,Angularjs,Cordova,Onsen Ui,我正在开发一个带有onsen UI(angularjs)+cordova的应用程序。 所以我有一个带有评论的页面,每个评论都有一个按钮“like”。 当用户已经喜欢这个页面时,我必须显示一个不同的按钮。 然后我创建了一个名为“active”的CSS类。 但为了使用这个类,我应该在angular表达式中创建一个循环,因为我从后端返回一个javascript对象,每个注释都有用户交互。例如: 该页面有3条注释:ID1、ID2和ID3 用户喜欢1号和3号评论。 返回的对象是: [object][0]i
ng-repeat="comment in comments | limitTo: 6"
好的,现在让我们尝试为已经“喜欢”(使用活动css类)的用户显示不同的按钮,如果用户还没有“喜欢”,则显示普通按钮
那有可能吗?如果没有,最好的方法是什么?这是绝对可能的: 在HTML中:
<button class="button btnice" ng-class="isLiked(commentId) ? 'active' : 'normal'">
这应该能奏效。如果对象的
likedComments
数组包含一个或多个具有comment\u id===commentId的对象,则返回true
,对象更难迭代以查找注释。如果该对象仅包含注释ID列表,则最好使用数组。您将如何构造对象?因为还有其他交互类型。但是我需要检查的是command_id,因为其他交互有comment_id=nullng class=“isLiked(commentId)?‘active’:‘normal’
@harleydavi:更改id后它对您有效吗?我还改进了答案中的代码。嘿,Cerburs,谢谢你的关注。不幸的是,它还没有起作用。我没有取消你的变量“交互”。我正在使用$scope.interaction并试图更改它,但没有成功。HTML中的commentID是正确的。
<button class="button btnice" ng-class="isLiked(commentId) ? 'active' : 'normal'">
var likedComments = [{interaction_id: "2", value: "1", comment_id: 1}, {...}];
$scope.isLiked = function(commentId){
return likedComments.some(function(interaction){
return interaction.comment_id === commentId;
});
};