Tôi chỉ mới bắt đầu chơi xung quanh với AngularJS và cố gắng để hiểu kỹ thuật ràng buộc. Để bắt đầu, tôi đã cố gắng để thực hiện một máy tính chuyển đổi đơn giản (hàng chục miếng, miếng để hàng chục). Đó là làm việc tốt, nhưng khi tôi đã cố gắng để ràng buộc cả một phạm vi đầu vào và một số đầu vào đối với tài sản cùng một mô hình các số đầu vào không cập nhật khi phạm vi giá trị được điều chỉnh. Tôi có một jsfiddle cho thấy các hành vi:Hai chiều ràng buộc với phạm vi và số đầu vào trong AngularJS
javascript phổ biến đối với bị phá vỡ và fiddles làm việc:
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>
Tuy nhiên, ràng buộc hai số đầu vào cùng một thuộc tính mô hình có vẻ hoạt động tốt như được hiển thị trong fiddle này:
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>
Bất kỳ ý tưởng làm thế nào để có được một loạt và số đầu vào ràng buộc với một bất động sản mô hình duy nhất trong AngularJS? Cảm ơn.
Tôi không nghĩ type = "phạm vi" được hỗ trợ: https://github.com/angular/angular.js/issues/1189 Bạn có thể sẽ phải viết chỉ thị của riêng bạn cho nó. –