2017-05-02 28 views
2

我正在使用在線儀表板。該儀表板有一個由與某個項目相關的所有任務組成的頁面。每個任務都有一些字段,例如預定給任務的小時數以及進度(從0到100%)。AngularJS - 更新字段後在ng-repeat中查找對象

The table looks as follows

它是可以改變的進展場,因爲它包括了所有可能的百分比的下拉菜單中。我曾經改變進度,選擇每一行,我修改並點擊'更新任務'按鈕,以便將它們發送給我的控制器並更新它們。這一直沒有問題,直到我的同事提出一旦進度字段的值被更改後自動更新任務的想法。每改變一次數值,我就可以在每一個激活的值上放置一個ng-click

但是我的問題是,我該如何讓我的控制器知道在那一刻我正在工作的行。假設我有3個不同的任務並更改了任務2的進度。我的控制器應該知道它必須將任務2的ID發送到服務器以更新其內容。

只要任務2的值更改爲例如30%,updateTaskById()方法就會執行。此方法應使用新值更新數據庫中的任務。我如何讓我的控制器知道它需要更新什麼任務。

HTML

<td md-cell class="tdWidth"> 
       <md-select ng-model="task.custom_fields['96203']" placeholder="100%"> 
        <md-option value="0" ng-click="updateTaskById()">0%</md-option> 
        <md-option value="0.1" ng-click="updateTaskById()">10%</md-option> 
        <md-option value="0.2" ng-click="updateTaskById()">20%</md-option> 
        <md-option value="0.3" ng-click="updateTaskById()">30%</md-option> 
        <md-option value="0.4" ng-click="updateTaskById()">40%</md-option> 
        <md-option value="0.5" ng-click="updateTaskById()">50%</md-option> 
        <md-option value="0.6" ng-click="updateTaskById()">60%</md-option> 
        <md-option value="0.7" ng-click="updateTaskById()">70%</md-option> 
        <md-option value="0.8" ng-click="updateTaskById()">80%</md-option> 
        <md-option value="0.9" ng-click="updateTaskById()">90%</md-option> 
        <md-option value="1" ng-click="updateTaskById()">100%</md-option> 
       </md-select> 
      </td> 

角控制器:

$scope.updateTaskById = function() { 
     // Update functionality here 
    }; 

在此先感謝,我希望我的問題是非常明顯的。

編輯:在亞歷山德魯的答案中可以看到,我發送的任務值是從ng-click改變的。例如:updateTaskById(task.task_id)

+2

這是一個有點很難理解你正在努力實現無代碼 – Mistalis

+0

什麼@Mistalis我已經更新的問題,試圖使之成爲可能的未來更清晰參考 – Lesleyvdp

回答

0

您可以將該值傳遞給ng-click方法。例如,

<md-option value="0" ng-click="updateTaskById(0)">0%</md-option> 

JS

$scope.updateTaskById(value){ 
    console.log(value); 
} 
+1

這正是我需要的。我很感謝你! – Lesleyvdp

+0

@Lesleyvdp,我更新了答案。 –

+1

@ Alexandru-Ionat Mihai再次感謝你,你以前的回答是正確的。我試圖告訴我的控制器它需要更新哪個任務。我不知道可以在ng-click內發送task.task_id。 – Lesleyvdp