2014-02-11 29 views
0

我有一個循環遍歷任務數組的ng-repeat。每個任務都有一個按鈕,您可以點擊並查看選項以分配日期和用戶。我想設置按鈕的消息以顯示每個任務分配的用戶/日期(如果有的話)(如在Basecamp上)。因此,如果沒有分配任何內容,則該消息將被「未分配:沒有到期日期」,如果兩者都被分配,則會說「史蒂夫鮑爾默:08/12/2015」。我試圖初始化消息:使用ng-repeat重新初始化按鈕消息

ng-init="setOptionsMessage(task) 

問題是它在每個循環中傳入相同的任務ID。有沒有更好的方式去做這件事?

回答

1

顯示NG重複以幫助說明你在做什麼。不過,我相信你需要調用一個函數並返回信息作爲按鈕的數據。

<div ng-controller="Ctrl"> 
    <div ng-repeat='button in buttons'> 
     <button ng-click="DoSomething(button.Action)">>{{button.Title}}</button> 
    </div> 
</div> 

這是假定控制器根據檢索到的數據填充標題。你也可以動態地做到這一點,但這是一個簡單的例子,可以幫助你開始。

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}}