2016-05-12 54 views
1

似乎角色與所選屬性相關的行爲在每個主要版本中來回切換。所以我只是在尋找某人告訴我這是否可以在1.5.x版本中使用ng-options而不是ng-repeat來實現。使用ng選項爲單個/多重選擇設置所選屬性

我想要做的事: 有角象創建HTML以下(以便它可以通過一個jQuery插件來解釋)

<select multiple="multiple"...> 
<option value="abc123" label="Justin" selected="selected">Justin</option> 
</select> 

我已經試過這

許多變化
<select ms-multi-listbox multiple="multiple" class="multi-select" 
id="ym" name="ym" ng-model="groupCtrl.memSelection" 
ng-options="mem as mem.displayName for mem in groupCtrl.selectableMembers track by mem.id"> 

沒有運氣。

模型是這樣的:

groupCtrl.memSelection =["abc123"];//inbound from api as is selectableMembers 

這裏是一個普拉克我一直在玩(請嘗試更改添加混亂角版本):Plunker

任何想法,歡迎..我主要是爲了避免ng-repeat,因爲它在更長的列表中有很多開銷,但顯然慢比不工作要好,所以我會使用它,直到我學會如何使用ng-options來完成此操作。

謝謝!

編輯: 這裏是一個NG-再講達到我想要的結果:

<option ng-repeat="mem in groupCtrl.selectableMembers" value="{{mem.id}}" label="{{mem.displayName}}" ng-selected="groupCtrl.memSelection.indexOf(mem.id)>=0">{{mem.displayName}}</option> 
enter code here 
+0

如果我正確理解你,你想根據選擇設置一個屬性。你需要一個自定義指令。 – Kyle

+0

是的,我想在選項標籤上設置'selected'屬性。當你的模型被初始化爲列表中的一個值時,Angular會在某些情況下(以及某些版本)爲你做這件事。 –

+0

你的鏈接是錯誤的。 –

回答

0

使用選擇何時和在同一個表達式跟蹤由要小心。 AngularJS API ngOptions

您的表達ng-options無法正常工作。在同一表達式中使用select astrack by評估mem.idmem.id.id。將表達式更改爲

ng-options="mem as mem.displayName for mem in groupCtrl.selectableMembers track by mem.id" 

而您如何設置所選對象對我來說看起來並不正確。您不能只設置ID,您必須將整個對象設置爲選中狀態,否則您的表達式評估也會失敗。因此,請將您的選擇更改爲(假設可選數據存儲在$scope.model中,因爲它在PLUN示例中)。

$scope.memSelection = [$scope.model[0], $scope.model[1]] 

我已經更新了plunk,它適用於單選和多選。

欲瞭解更多信息,請閱讀AngularJS API ngOptions

+0

謝謝Paul,我現在糾正了這個問題。 –

+0

我認爲它現在適用,除了1.4版本,但只適用於單選(更新的鏈接器)。我猜測應用多選的屬性是不支持的。 –