如何使用angularjs更新父模型对象

时间:2016-09-08 12:11:28

标签: angularjs

我遇到以下代码的问题。

    <tr ng-repeat="diag in diags track by diag.id">
       <td>
           <select id="ddTest" ng-change="changeevent()">
               <option value="">Select Number</option>
               <option ng-repeat="o in orderNumbers" data-diagId="{{diag.id}}" ng-selected="o==diag.ordernumber">{{order}}
               </option>
           </select>
      </td>
  </tr>

$scope.orderNumbers= [1,2,3,4,5,6,7,8,9,10];

diags对象中是一个包含ordernumber的数组。我正在尝试使用自定义属性data-diagId将ddTest下拉列表更改中的特定ordernumber更新为diags对象。我没有任何ddTest下拉模型(我可以根据需要添加它)。我想在加载时填充值,还需要使用选中的新订单号更新父对象。有人可以帮我这么做吗?

1 个答案:

答案 0 :(得分:0)

在您的选择中使用ng-options指令和ng-model,然后每次更改选项时diag.ordernumber都会更改,因此所选的选项会连接到模型而无需任何其他编程。这里有完整的工作示例:

&#13;
&#13;
var app = angular.module("diagApp", []); 

app.controller("diagController", function($scope) {
    $scope.orderNumbers= [1,2,3,4,5,6,7,8,9,10];
    
    //test diags
    $scope.diags=[
    {id:1,ordernumber:1},
    {id:2,ordernumber:2},
    {id:3,ordernumber:3}
    
    ];
    
    //to prove that diag is changing
    $scope.change=function(diag){
    
       console.log(diag);
    
    };
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="diagApp">
<table ng-controller="diagController">
<tr ng-repeat="diag in diags track by diag.id">
       <td>
           <select ng-change="change(diag)" id="ddTest" ng-model="diag.ordernumber" ng-options="item as item for item in orderNumbers track by item">
           </select>
      </td>
  </tr>
</table>
</div>
&#13;
&#13;
&#13;