我正在尝试通过转换一段有效的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>
答案 0 :(得分:60)
我认为这应该做你想要的:
<button ng-click='activity.seen = !activity.seen'>
<span>{{activity.seen ? 'Mark unread' : 'Mark read'}}</span>
</button>