Подтвердить что ты не робот

Текст кнопки AngularJS, основанный на условии в ng-repeat

Я пытаюсь изучить Angular путем преобразования части рабочего кода jQuery/AJAX. Это средство просмотра активности внутри таблицы, которое в основном отображает сообщение с кнопкой "Отметить чтение" или "Отметить непрочитанное" на основе условия. У меня возникла проблема с настройкой текста кнопки на основе activity.seen == 0.

// html
<div class="table-responsive" ng-controller="Activity">
    <table class="table table-bordered table-striped table-hover">
        <tbody>
            <tr ng-repeat="activity in activities" ng-class="{ 'activity-read': activity.seen == 1 }">
                <td><button class="btn btn-default"><span ng-bind="buttonText"></span></button></td>
                <td>{{ activity.content }}</td>
            </tr>
    </table>
</div>

// controller
function Activity($scope, $http, $templateCache)
{
    $http.get('/activity/get').success(function(response, status)
    {
        $scope.activities = response;

        angular.forEach($scope.activities, function(activity)
        {
            $scope.buttonText = activity.seen == 0 ? 'Mark Read' : 'Mark Unread';
        });
    });
}

Это просто устанавливает buttonText как бы то ни было последнее значение условного выражения activity.seen. Итак, как я могу динамически привязывать правильный текст к каждой кнопке строки при начальной загрузке.

Это должно иметь двустороннюю привязку, я думаю, потому что мне также нужно обновить текст кнопки после ее нажатия на основе нового значения activity.seen, которое будет отправлено методу обновления с помощью $http.

4b9b3361

Ответ 1

Я думаю, что это должно делать то, что вы хотите:

    <button ng-click='activity.seen = !activity.seen'>
        <span>{{activity.seen ? 'Mark unread' : 'Mark read'}}</span>
    </button>

Fiddle