AngularJS - обновление значения «self» программно через функцию

0

Извините заранее, я не уверен, что лучший способ описать это, или назвать этот вопрос. Мой код, надеюсь, объяснит, чего я пытаюсь достичь.

У меня есть массив списков, который зацикливается в представлении "ng-repeat". Каждый из них может быть обновлен индивидуально с помощью функции (вызванной нажатием кнопки для этого списка), но эта функция просто знает о текущем клике на листинге (она прошла в качестве параметра). Функция должна изменить значение этого списка в представлении.

например:

JS:

.controller('searchCtrl', function($scope, $state, $stateParams, $location, $ionicPopup, Service) { 
    var self = this;
    self.listings  = response.data.items.hits.hits; //Array of listings
    ....
    self.watchlist = function(listing) { //Update individual listing value
       ....
       if (listing.in_watchlist) {
           listing.in_watchlist = 0; //want this to update the actual matching listing in 'self.listings'
       } else {
           listing.in_watchlist = 1; //want this to update the actual matching listing in 'self.listings'
       }
       ....

HTML:

<ion-item ng-repeat="listing in search.listings">
    In watchlist: {{listing.in_watchlist}}<br/>  
    <button class="button button-block button-balanced ion-star" ng-click="search.watchlist(listing);"></button>
</ion-item>
  • 2
    Во-первых, вы не должны использовать {{ & }} в HTML. Это должен быть search.watchlist(listing)
  • 0
    Спасибо за пикап, исправил это. Хотя первоначальный вопрос остается в силе.
Теги:

1 ответ

1
Лучший ответ

Кажется, что проблема заключается в выражении внутри директивы ng-click.

Попробуйте удалить фигурные фигурные скобки в вашем ng-click: ng-click="search.watchlist(listing);"

Вот скрипка с рабочим примером того, что вы пробовали:

  • 1
    Отлично, так близко, так просто, спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню