2017-01-21 12 views
0

ng-repeatに反復処理するオブジェクトごとに1つまたは複数の選択ボックスがあります。ユーザーは選択ボックスから3つの優先順位を選択し、ボタンをクリックするだけでそれらを保存することができます。 save関数では、object.idに属している選択ボックスと選択された値にアクセスします。ここで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

は、あなたのオブジェクトを投稿するには、優先順位の配列が何であるかを – Sajeetharan

+0

をJSON – 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-model="object.selectedPriority"ng-value="priority"を:あなたがそれらを分離する必要がng-value="{{ priority.name }}+{{ object.id }}"

。 最後に保存ボタンをクリックします:ループを実行して、各オブジェクトの選択した優先度を印刷します。

あなたのpriorities配列は、nameキーを持つオブジェクトの束であると仮定しました。この チェック:私が間違って取得した場合:)

0

を幸いhttp://codepen.io/anon/pen/pRPbdq

申し訳ありませんが、あなたはng-modelディレクティブに配列を渡すことができますが、ここでのトリックは適切なインデックスを使用することです。ここで

<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を、使用している:

は、次のようにあなたのHTMLを変更する必要があります。

ここで、ボタンをクリックするだけで$scope.selectedPriorityを操作すると、希望する値の配列が得られます。

関連する問題