最初の例でモデルオプションが選択され、2番目の例ではプレーン配列が選択されていない理由を誰か教えてください:
// Plain old array
vm.owner = ['example', 'example2', 'example3', ...];
モデルの場所vm.model.address.owner = 2;
// EXAMPLE 1 - Works
// Force index to be a number: using id*1 instead of it being a string:
// and the option ('example3') is selected based on the model value of 2
// indicating the index
<select id="owner"
name="owner"
placeholder="Residential Status"
ng-model="vm.model.address.owner"
ng-required="true"
ng-options="id*1 as owner for (id, owner) in vm.owner">
<option value="">Select Value</option>
</select>
ハックを使用せずに track by を代わりに使用しようとすると、値がまだモデルに設定されていても、インデックス 2 が選択されません。
// EXAMPLE 2 - Doesn't Work
// Markup doesn't show value to be a string: using track by, but the
// option set in the model doesn't cause the option to be selected it
// remains as the default with a value of ''
<select id="owner"
name="owner"
placeholder="Residential Status"
ng-model="vm.model.address.owner"
ng-required="true"
ng-options="owner for (id, owner) in vm.owner track by id">
<option value="">Select Value</option>
</select>
ngOptions は非常に紛らわしいので、例 2 の説明や解決策は、よりクリーンでハックではないため、素晴らしいでしょう。