ng-options中的对象数组

时间:2015-06-09 06:33:33

标签: angularjs angularjs-ng-repeat ng-options angularjs-ng-options

我在将对象内部的数组转换为ng-options时遇到了问题。

我在另一个数组中有以下对象数组:

$scope.array = [{name: "jan", ar=["car", "bus", "bike"]}, {name: "tom", ar=["milk", "water", "bike", "walking"]}, {name: "kim", ar=["star", "car"]}]

我想用jan,tom和kim选项进行选择。但这不是一个问题:

<select ng-options="o.name for o in array" ng-model="choosen.nOption">

然而,当他们选择一个选项时,新的选择应该从该名称的数组ar作为选项开始:

<select ng-if="choosen.nOption!=undefined" ng-options="o.ar for o in array.ar | filter: {name: choosen.nOption}">

任何人都可以帮助我获取内部数组的值吗?

你可以在https://jsfiddle.net/brokenhip/phxyap8a/

找到一个小提琴手

解决方案: https://jsfiddle.net/brokenhip/phxyap8a/2/

<select ng-options="o.name for o in arrayA" ng-model="choosen.nOption"></select>

         <select  ng-if="choosen.nOption!=undefined" ng-options="o for o in choosen.nOption.ar" ng-model="choosen.nOption2"> </select>

1 个答案:

答案 0 :(得分:0)

所以我发现一个简单的方法是使用$ watch来查看第一次选择更改的时间。

在你的控制器中添加:

    $scope.$watch('choosen.nOption',function(newVal){
          $scope.choosenOption = newVal['ar'];
          console.log($scope.choosenOption); // check in your console
      });  

在HTML中,您不需要过滤器:

  <select  ng-if="choosen.nOption!=undefined" ng-options="opt for opt in choosenOption" ng-model="choosen.nOption2"> </select>