2017-02-26 120 views
0

我正在用ng-repeat添加ui-selects,但我不知道如何從控制器中的每個ui-select中分別獲取值。我想在控制器中獲取選定的項目值作爲參數發送$ http請求。如何從ui-選擇在ng-repeat中獲得選定的值

<div ng-repeat="repeat in repeats"> 
    <p>Selected: {{pattern.selected.name}}</p> 
    <ui-select ng-model="repeat.id"> 
<ui-select-match placeholder="Enter an pattern...">{{$select.selected.name}}</ui-select-match> 
<ui-select-choices repeat="pattern in data_pattern_newspapers track by $index"> 
    <div ng-bind-html="pattern.name | highlight: $select.search"></div> 
</ui-select-choices> 

我想下面做出頭在我的控制器:

alert($scope.repeat.id.selected) 

我如何可以訪問到的每個UI,選擇在我的控制器的型號?

plnkr

請一些身體幫我。謝謝!

+0

上'repeat.id'正在改變'id'值從它的初始值,無論你在下拉列表中選擇值你的'NG-model'。這可能是也可能不是你想要的;它可能不是,因爲你的選擇是綁定一個對象:http://plnkr.co/edit/sOrXVNiUQaj5HO3TKJyH?p=preview – Claies

+0

爲了使其他人更容易建議替代方案,你可能想解釋你是什麼計劃使用的值。 – Claies

+0

@Claies我想要獲取控制器中選定的項目值作爲參數發送$ http請求。那麼我應該在控制器中做些什麼來獲得這個選擇的項目? –

回答

1

在HTML利用ngRepeat的$index屬性來創建針對每個ui-select的獨特模式,並通過$index進入ngChange功能:

<ui-select ng-model="selections[$index]" ng-change="selectionChanged($index)"> 

在控制器初始化一個數組來保存所選擇的值,並且添加上述功能接收$index引用此數組:

$scope.selections = []; 

$scope.selectionChanged = function(idx) { 
    console.log(idx, $scope.selections[idx]); 
}; 

現在$scope.selections是他們的選擇的陣列,因爲它們使它們。

演示:http://plnkr.co/edit/NSK3UmelATopV0Juw8BV?p=preview

+0

請注意,'ngChange'函數不是必需的 - 您可以隨時參考'$ scope.selections',但是我認爲您可能會在選擇更改時採取某種操作。然而,關鍵是使用$ index:'ng-model =「選項[$ index]」' –

+0

是的,確切地說。完美地工作。謝謝! @K Scandrett –