2015-10-12 2 views
1

Я разрабатываю приложение с пользовательским интерфейсом onsen (angularjs) + cordova. Итак, у меня есть страница с комментариями, и у каждого комментария есть кнопка «like». Я должен показать другую кнопку, когда пользователю уже понравилась страница. Затем я создал класс CSS с именем «active». Но я могу использовать этот класс, я должен создать цикл внутри углового выражения, потому что я возвращаю из backend объект javascript с пользовательскими взаимодействиями для каждого комментария. Пример:Есть ли способ сделать цикл в шаблоне angularjs?

страница имеет 3 комментариев: идентификатор 1, ID 2 и ИН 3 Пользователь понравившиеся комментарий номер 1 и 3. Объект возвращает: [объект] [0] = ID> 1, [ объект] [1] ID => 3

Тогда я показываю комментарии со angularjs цикла, как это:

ng-repeat="comment in comments | limitTo: 6" 

Хорошо, теперь давайте попробуем показать другую кнопку для уже «понравилось» (с active css class) и обычной кнопкой, если пользователь еще не «понравился».

<button class="button btnice {{ event.event_id in interactions ? 'active' : 'normal'}}"> 

Это возможно? Если нет, то каков наилучший способ сделать это?

ответ

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.

+0

Звучит здорово! Но могу ли я использовать объект тоже? var favoriteComments = объект. Поэтому мне нужно написать что-то вроде: lovedComment.comment_id? – harleydavi

+0

Объекты более сложны для перебора, чтобы найти комментарий. Если этот объект _only_ содержит список идентификаторов комментариев, вам лучше использовать массив. Как бы вы структурировали объект? – Cerbrus

+0

О, это объект: [{interactive_id: "2", value: "1", comment_id: 1}, {...}] – harleydavi

Смежные вопросы