<select>
整数値を対応するオプションのリストにバインドするために、 ng-options を a とともに使用しようとしています。私のコントローラーには、次のようなものがあります。
myApp.controller('MyCtrl', function() {
var self = this;
var unitOptionsFromServer = {
2: "mA",
3: "A",
4: "mV",
5: "V",
6: "W",
7: "kW"
};
self.unitsOptions = Object.keys(unitOptionsFromServer).map(function (key) {
return { id: key, text: unitOptionsFromServer[key] };
});
self.selectedUnitOrdinal = 4; // Assume this value came from the server.
});
HTML:
<div ng-controller="MyCtrl as ctrl">
<div>selectedUnitOrdinal: {{ctrl.selectedUnitOrdinal}}</div>
<select ng-model="ctrl.selectedUnitOrdinal" ng-options="unit.id as unit.text for unit in ctrl.unitsOptions"></select>
</div>
そして、ここに問題を示すjsFiddleと、私が取ったが満足していない他のいくつかのアプローチがあります。
選択オプションは、この例で予想される「mV」ではなく、空の値で初期化されています。別のオプションを選択すると、バインドは正常に機能するようです。selectedUnitOrdinal は適切に更新されます。
初期モデル値を数値ではなく文字列に設定すると、初期選択が機能することに気付きました (フィドルの #3 を参照)。
私は本当に ng-options が数値のオプション値でうまくいくことを望んでいます。どうすればこれをエレガントに達成できますか?