2016-03-04 182 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 –