2017-04-25 9 views
0

を複数選択して結合されていない私は、オブジェクトの配列($ scope.selectedProperties)に結合している複数選択ドロップダウンがあります。設定モデルはDDL

<select id="propertyDdl" multiple="multiple" 
ng-model="selectedProperties" 
ng-options="account.property_name group by account.client_name for account in accountInfo"> 
</select> 

を(accountInfoのはの配列を含むスコープのプロパティですオブジェクト):特定のイベントに

[{client_name:"Client 1", is_demo:false, property_name:"Prop 1"}, 
{client_name:"Client 2", is_demo:false, property_name:"Prop 2" }, 
{client_name:"Client 3", is_demo:false, property_name:"Prop 3" }] 

、Iは、選択されたアイテムの配列を格納:

$scope.updateSessionProperties = function() { 
    CachingService.cachedSelectedProperties = $scope.selectedProperties; 
}; 

は...そして、それらを後で再適用:

if(CachingService.cachedSelectedProperties && CachingService.cachedSelectedProperties.length>0){ 
    $scope.selectedProperties = CachingService.cachedSelectedProperties; 
} 

を、それがバインドされたオブジェクト(selectedProperties)の配列はaccountInfoのと同じ構造になっています。運...ドロップダウンリストを表示して

[{client_name:"Client 1", is_demo:false, property_name:"Prop 1"}, 
{client_name:"Client 2", is_demo:false, property_name:"Prop 2" }] 

バインドされているスコープ・プロパティーが同一のオブジェクトであっても、「選択されていません」。 $ scope($ apply()も実行しようとしましたが、select要素は再バインドされません。

+0

? –

+0

$ scope.accountInfoは$ scopeの先頭に定義されており、[{client_name: "Client 1"、is_demo:false、property_name: "Prop 1"}、 {client_name: "Client 2、is_demo:false、property_name: "Prop 2"}、 {client_name: "Client 3"、is_demo:false、property_name: "Prop 3" ...}]興味深いことに、accountInfoの項目をselectedPropertiesバインディングは機能しますが、selectedPropertiesに同じ項目を他の方法でプッシュすると失敗します。 – DShultz

答えて

0

ng-optionsて読んだ後、私は次のことをお勧めします:

`accountInfo`が定義されている
<select 
    id="propertyDdl" 
    multiple="multiple" 
    ng-model="userSelectedProperties" 
    ng-options="account.property_name group by account.client_name for account in selectedProperties"> 
</select> 
関連する問題