我有一个循环执行一系列任务的ng-repeat。每个任务都有一个按钮,可以单击并查看分配日期和用户的选项。我想设置按钮的消息,以显示每个任务分配的用户/日期(如果有的话)(如在Basecamp上)。因此,如果没有分配任何内容,则消息将是“未分配:没有截止日期”,如果两者都被分配,则会说“史蒂夫鲍尔默:2015年12月12日”。我尝试使用以下命令初始化消息:
ng-init="setOptionsMessage(task)
问题是它在每个循环中传递相同的任务ID。有没有更好的方法来做这件事?
答案 0 :(得分:1)
你能分享一些代码吗?我不明白你的问题,但也许这可能会有所帮助: http://plnkr.co/edit/oKxIk8Dg8nyCy3PxmS82?p=preview
也许它应该只是评论,但我没有足够的声誉来发表评论:)
答案 1 :(得分:1)
显示ng-repeat行以帮助说明您正在做什么。但是,我认为你需要调用一个函数并将信息作为按钮的数据返回。
<div ng-controller="Ctrl">
<div ng-repeat='button in buttons'>
<button ng-click="DoSomething(button.Action)">>{{button.Title}}</button>
</div>
</div>
这假设控制器已根据检索的数据填充标题。您也可以动态地执行此操作,但这是一个简单的示例,可帮助您入门。
答案 2 :(得分:1)
感谢您的帮助。我做了上面提到的事情。我在每个li上运行一个init函数,每个函数都属于一个任务。这是init函数:
$scope.setOptionsMessage = function(task) {
if(task.asigneeId) {
task.optionsMessage = $scope.fullName(task.user);
task.optionsMessage += ' | ';
}
else {
task.optionsMessage = 'Not assigned | ';
}
if(task.dueDate) {
task.optionsMessage += 'Due on: ' + task.dueDate;
}
else if(task.dueEvent === $scope.NEXT_APPOINTMENT) {
task.optionsMessage += 'Due at next appointment';
}
else {
task.optionsMessage += 'No due date';
}
}
这会为每个任务对象添加一个optionsMessage属性,以便它可以用作每个任务的消息。这是与该部分代码相关的html(slim):
li [ng-repeat='task in uncompletedTasks' ng-init="setOptionsMessage(task)" class='patient-task repeated-item']
span ng-hide="editing"
input type="checkbox" ng-click="markComplete(task)"
span class="task-text" {{task.text}}
span class="task-popover-link"
span class="click-link" ng-click="optionsShow=!optionsShow"
| {{task.optionsMessage}}