AngularJS根据ng-repeat中的条件设置按钮文本

时间:2014-03-10 22:23:14

标签: angularjs

我正在尝试通过转换一段有效的jQuery / AJAX代码来学习Angular。它是表格内的活动查看器,基本上根据条件显示带有“标记读取”或“标记未读”按钮的消息。我无法根据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发布到更新方法。< / p>

1 个答案:

答案 0 :(得分:60)

我认为这应该做你想要的:

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

Fiddle