2016-03-04 141 views
0

我有2选择ng选项。我希望第二个选择重复选择namevalues字段。筛选ng选项

我发现的唯一解决方案是选择对象本身,而不仅仅是第一个选择中的名称字段(类似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"] 
 
    }]; 
 
});
<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-options="d as d for d in data"></select> 
 
</div>

回答

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>

+0

问题是$范围。 name === {{$ index}}而不是名称本身 – IggY

+0

这会将'$ scope.name'的值设置为0,1,这就是操作可能不想这么做。 –

+0

不难有'$ scope.getName = function(id){return $ scope.data [id]}' –

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>

+0

这就是我想要的行为:),我也觉得这种方式有点“脏”。如果没有人提出更清洁的解决方案,我会接受你的回答:) – IggY

+0

其实他在'data'中只有2个对象,但用ngIf迭代在我看来并不是一个好选择! –

+0

我认为这只是一个虚拟数据@SteevePitis –