AngularJS をいじり始めたばかりで、バインド手法を理解しようとしています。手始めに、単純な変換計算機 (数十から数、数から数十) を作成してみました。これはうまくいきましたが、範囲入力と数値入力の両方を同じモデル プロパティにバインドしようとすると、範囲値が調整されたときに数値入力が更新されません。私は動作を示すjsfiddleを持っています:
壊れたフィドルと動作するフィドルの一般的な JavaScript:
var myApp = angular.module('myApp', []);
myApp.controller('CalcCtrl', function ($scope) {
var num = 0.0;
$scope.qty = new Quantity(12);
$scope.num = num;
});
function Quantity(numOfPcs) {
var qty = numOfPcs;
var dozens = numOfPcs / 12;
this.__defineGetter__("qty", function () {
return qty;
});
this.__defineSetter__("qty", function (val) {
qty = val;
dozens = val / 12;
});
this.__defineGetter__("dozens", function () {
return dozens;
});
this.__defineSetter__("dozens", function (val) {
dozens = val;
qty = val * 12;
});
}
html:
<div ng-controller="CalcCtrl">
<form>
<label for="pcs">Pieces:</label>
<input type="number" min="0" ng-model="qty.qty" size="20" id="pcs"
/>
<input type="range" min="0" max="100" ng-model="qty.qty" />
<br/>
<label for="numOfDozens">Dozens</label>
<input type="number" min="0" ng-model="qty.dozens" size="20"
id="numOfDozens" />
</form>
</div>
ただし、2 つの数値入力を同じモデル プロパティにバインドすると、次のフィドルに示すように正常に動作するようです。
html:
<div ng-controller="CalcCtrl">
<form>
<label for="pcs">Pieces:</label>
<input type="number" min="0" ng-model="qty.qty" size="20" id="pcs"
/>
<input type="number" min="0" max="100" ng-model="qty.qty" />
<br/>
<label for="numOfDozens">Dozens</label>
<input type="number" min="0" ng-model="qty.dozens" size="20"
id="numOfDozens" />
</form>
</div>
AngularJS で単一のモデル プロパティにバインドされた範囲と数値の入力を取得する方法はありますか? ありがとう。