2016-08-30 4 views
2

1番目の質問:angularjs ng-optionsを使用してデフォルト値を選択

データが配列でないときにng-optionを使用してデフォルト値を設定するにはどうすればよいですか?

<select ng-model="selected" ng-options="name for (name, value) in items"></select> 

私は実際にどのようにこの作品^

知らない:それは項目が配列の場合、私は単に

ここ
select = $scope.items[0]; 

を行うことができます簡単なのは、Demo

第二の質問です

私のコントローラには、このようなキー値オブジェクトがあります

$scope.items = { 
    'one': 30, 
    'two': 27, 
    'three': 50, 
    'four': 15, 
    'five': 27, 
    'six': 30 
    }; 
+0

データが配列でない場合のng-option?しかし何? 'ng-option'は配列 –

+0

に対してのみ選択されたものとして表示されますか? – Vineet

+0

@Vineet私のオブジェクトの最初の値 –

答えて

0

質問1のためのソリューション:

$scope.itemsは、アレイが、object 、その後

select = $scope.items.one; // to select first 

OR

select = $scope.items['one']; // to select first 
されていない場合

質問2:

あなたのコード内の

<select ng-model="selected" ng-options="name for (name, value) in items"></select> 

でJS

$scope.secleted = $scope.items['one'] 

(name, value) in itemsは、名前と値(keyvalueペアの配列)の配列を返します。 namevaluesをマップできます。そのため、それが動作している

+0

「for in」でこれ以上読むことはありませんか?それはjsの通常の 'for 'のようなものですか? –

+0

配列のオブジェクトがネストされているとどうなりますか? ng-optionはまだ動作しますか? –

+0

実際に選択すると、オプションの値が機能します。あなたのケースでは、同じ値「1」と「6」の2つのオプションがあります。 Plus syamでは、コントローラの変数、つまり 'selected'にデフォルトオプションを設定するのを忘れていました。コードを '$ scope.secleted = $ scope.items ['one']'で更新してください。あなたのケースでは、この '$ scope.items ['one''は期待通りに動作しません。 – Vineet

0

オブジェクトの値が(あなたの場合のように)プリミティブ型である場合、角度は参照ではなく値で比較されます。だから、:

​​

か:

$scope.selected = $scope.items['one']; 

作品。

値が非プリミティブな場合は、オブジェクトの平等以外のものによって追跡するために「トラックバイ」を使用することをお勧めします。

関連する問題