过滤ng-options

时间:2016-03-04 13:25:37

标签: javascript angularjs

我有两个选择ng-options。我希望第二个选择迭代选择values的{​​{1}}字段。

我找到的唯一解决方案是选择对象本身,而不仅仅是第一个选择中的名称字段(类似name) 但为了保持一致性,我宁愿不这样做。

我可以使用过滤器或类似的东西来解决这个问题吗?



d as d.name for d in data

angular.module("App", []).controller("Ctrl", function($scope) {
  $scope.data = [{ 
    name : "john",
    values : ["Hello", "World"]
   }, {
    name : "peter",
    values : ["Bonjour", "le", "monde"]
   }];
});




2 个答案:

答案 0 :(得分:0)

喜欢这个吗?



angular.module("App", []).controller("Ctrl", function($scope) {
  $scope.data = [{ 
    name : "john",
    values : ["Hello", "World"]
   }, {
    name : "peter",
    values : ["Bonjour", "le", "monde"]
   }];
});

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="App" ng-controller="Ctrl">
<label>Name :</label>
<select ng-model="name" ng-options="d.name for d in data"></select>
<label>Value : </label>
<select ng-model="value" ng-options="d as d for d in name.values"></select>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我不确定是否有更好的方法,但这是一种有效的方式:

angular.module("App", []).controller("Ctrl", function($scope) {
  $scope.data = [{ 
    name : "john",
    values : ["Hello", "World"]
   }, {
    name : "peter",
    values : ["Bonjour", "le", "monde"]
   }];
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="App" ng-controller="Ctrl">
<label>Name :</label>
<select ng-model="name" ng-options="d.name as d.name for d in data"></select>
<label>Value :</label>
<select ng-model="value" ng-repeat="d in data" ng-if="name === d.name" ng-options="val for val in d.values"></select>
</div>