说我有一些html如下:
<html>
<head> angular etc. </head>
<body ng-app>
<div ng-controller="MyCtrl">
<input ng-model="weight" type="number" min="{{minWeight}}" max="{{maxWeight}}">
<p>{{weight}}</p>
</div>
</body>
</html>
和以下控制器:
function MyCtrl($scope){
$scope.weight = 200;
$scope.minWeight = 100.0;
$scope.maxWeight = 300.0;
}
“min”和“max”将向用户显示他们的输入是坏的,如果我硬编码说100和300,它将确保该值永远不会绑定到模型(为什么不是行为一样吗?)。我想做的只是在值满足输入要求时才实际改变“重量”。有什么想法吗?
答案 0 :(得分:1)
我不完全明白你想做什么。
HTML:
<html>
<head> angular etc. </head>
<body ng-app="MyApp">
<div ng-controller="MyCtrl">
<input ng-model="weight" type="number" min="{{minWeight}}" max="{{maxWeight}}">
<p>{{weight}}</p>
</div>
</body>
</html>
Angular: [编辑]
var app = angular.module('myApp', []);
app.controller('MyCtrl', ['$scope', function MyCtrl($scope){
$scope.weight = 200;
$scope.minWeight = 100.0;
$scope.maxWeight = 300.0;
$scope.$watch('weight', function (newValue, oldValue) {
if(typeof newValue === 'number') {
if(newValue > $scope.maxWeight || newValue < $scope.minWeight) {
$scope.weight = oldValue;
}
}
});
}]);
但这是我在jsFiddle中做的一个例子。我希望这是你正在寻找的解决方案。
<强> [编辑] 强>
http://jsfiddle.net/migontech/jfDd2/1/
[编辑2]
我制定了一个延迟验证输入字段的指令。 如果它不正确,则将其设置回最后一个正确的值。 这是完全基本的。您可以扩展它以表示它是否小于允许使用最小值,如果它更多则允许使用最大值它完全取决于您。您可以根据需要更改指令。
http://jsfiddle.net/migontech/jfDd2/2/
如果您有任何问题,请告诉我。