2016-10-25 4 views
0
<div class="row" ng-repeat="data1 in data.results "> 
      <div class="col" >{{$index}}</div> 
      <div class="col">{{data1.item_name}}</div> 
      <div class="col"> 
      <select ng-model = "value" ng-change = "callUsers(value)"> 
      <option value = "" selected>Choose a process</option> 
       <option ng-repeat='proces in data.process' >{{proces.name}}</option> 
       </select> 

      </div> 
      <div class="col"> 
      <select ng-model = "value1" ng-change = "selectedEmployee(value1)"> 
      <option value = "" selected>Select User</option> 
       <option value ="" ng-repeat='employee in employeeList' >{{employee.firstName}}</option> 
       </select> 

      </div> 
    </div> 

コントローラーのコードで複数のselect文を処理します。はNGリピートのdiv

しかし、ここでの問題は、employeeListスコープ内にselectステートメントが多数あるため、プロセスのselectオプション値を変更するとemployeeListが自動的に更新されることです。

これを処理する方法は?

おかげ

答えて

0

問題は、あなたが必要として、あなたが従業員のリストを隔離されていないということです。したがって、リストとその内容をコンテキスト(つまりdata1)内に宣言する必要があり、うまく動作するはずです。

data1を追加して、ng-change="callUsers(value, data1)"のようなコンテキストを識別する必要があります。また、data1の従業員リストを今度は隔離して、今度はng-repeat='employee in data1.employeeList'のように繰り返す必要があります。

<div class="row" ng-repeat="data1 in data.results "> 
    <div class="col" >{{$index}}</div> 
    <div class="col">{{data1.item_name}}</div> 
    <div class="col"> 
     <select ng-model="value" ng-change="callUsers(value, data1)"> 
     <option value="" selected>Choose a process</option> 
     <option ng-repeat='proces in data.process' >{{proces.name}}</option> 
     </select> 
    </div> 
    <div class="col"> 
     <select ng-model = "data1.value1" ng-change="selectedEmployee(value1)"> 
     <option value = "" selected>Select User</option> 
     <option value ="" ng-repeat='employee in data1.employeeList' >{{employee.firstName}}</option> 
     </select> 
    </div> 
</div> 

とコントローラ上、代わりにメインの範囲には、従業員のリストを結合させる、あなたのループの孤立状況であるdata1にバインドします。

$scope.callUsers = function (code, data1) { 
    //$scope.employeeList = []; 
    for (var i = 0; i < $scope.data.process.length; i++) { 

     if ($scope.data.process[i].name == code) { 
      var param = { 
       'process': $scope.data.process[i].code 

      } 

      AssignOrderService.getEmployees(param) 
       .success(function (data) { 
        $ionicLoading.hide(); 

        console.log(data); 
        if (data.length > 0) { 
         data1.employeeList = data; 
        } 

       }).error(function (data) { 
        $ionicLoading.hide(); 
       }); 
     } 
    } 
} 
+0

私はプロセスを変更します。私は以前の選択が削除されているので、値の新しいセットでemployeeListを更新しています。以前の選択は変更されていない必要があります。どのようにそれを行うことができますか? –

+0

私がangular.copyを実行したとき、値は保存されていますが、ビュー上では変更されています –

+0

@KarthikYeruva umm、コントローラコードで質問を更新してもよろしいですか? –