2017-01-21 60 views
0

對於我在ng-repeat中迭代的每個對象,我都有一個或多個選擇框。用戶應該能夠從選擇框中選擇3個優先級並通過點擊按鈕進行保存。在保存功能中,我想訪問屬於選擇框的object.id和選擇的值。保存具有編號的多個選擇框的值

這裏是我當前的代碼以我的問題和問題的意見:

HTML

<div ng-repeat="object in objects"> 
    <div> 
     <md-input-container> 
      <md-select ng-model="selectedPriority" placeholder="Priorität"> 
       <md-option ng-value="{{ priority.name }}+{{ object.id }}" ng-repeat="priority in priorities">{{ priority.name }}</md-option> <!--setting of ng-value throws an error? How can I do this?--> 
      </md-select> 
     </md-input-container><br> 
     {{ object.id}} 
    </div> 
</div> 
<md-button ng-click="save()">Save</md-button> 

控制器

$scope.save = function() { 
    console.log($scope.selectedPriority); //Here I want to get all object.id with selected value but it is undefined 
} 

@Sajeetharan:對象JSON具有以下表格

JSON

[{ 
    "date":"2017-01-21T18:20:00.873Z", 
    "duration":120, 
    "location":"Test", 
    "passed":false, 
    "id":"58838763019ac0479455bbc0" 
}, 
{ 
    "date":"2017-01-21T15:15:00.420Z", 
    "duration":10, 
    "location":"Test", 
    "passed":false, 
    "id":"58839ac9019ac0479455bbc1" 
} 
//...] 
+0

發表您的對象JSON – Sajeetharan

+0

什麼是優先級排列 – Sajeetharan

回答

0

請試試這個:

初始化selectedPriority爲空數組:

$scope.selectedPriority = [ ]; 

使用NG-變化來反映變化到selectedPriority,只能訪問他們保存功能。

<div ng-repeat="object in objects"> 
    <div> 
     <md-input-container> 

      <md-select ng-model="selectedPriority[$index].priority" placeholder="Priorität" ng-change=" selectedPriority[$index].objectId = object.id"> 
       <md-option ng-value="priority.name" ng-repeat="priority in priorities">{{ priority.name }}</md-option> <!--setting of ng-value throws an error? How can I do this?--> 
      </md-select> 
     </md-input-container><br> 
     {{ object.id}} 
    </div> 
</div> 
<md-button ng-click="save()">Save</md-button> 

,然後訪問selectedPriority:

$scope.save = function(){ 
    // use $scope.selectedPriority[neededIndex].objectId ; 
    // use $scope.selectedPriority[neededIndex].priority ; 
} 
0

不能使用這樣的:ng-value="{{ priority.name }}+{{ object.id }}"

你必須把它們分開:ng-model="object.selectedPriority"ng-value="priority"。 最後在保存按鈕上單擊:使循環打印每個對象的選定優先級。

我認爲你的priorities數組是一串具有name鍵的對象。 檢查:http://codepen.io/anon/pen/pRPbdq

很抱歉,如果我錯了:)

0

幸運的是,你可以傳遞一個數組到ng-model指令,但這裏的技巧是使用合適的索引。

你需要改變你的HTML如下:

<div ng-repeat="object in objects track by $index"> 
    <div> 
    <select ng-model="selectedPriority[$index]"> 
     <option ng-repeat="priority in priorities" value="{{ priority.name }}+{{ object.id }}">{{priority}}</option> 
    </select> 
    </div> 
</div> 

這裏,我們使用範圍變量selectedPriority,它被聲明爲一個數組。

現在,如果您只是在按鈕的點擊上控制檯$scope.selectedPriority,您將獲得一個包含所需值的數組。