Angular - 模型的默认值

时间:2013-03-26 20:47:33

标签: angularjs

说我有一些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,它将确保该值永远不会绑定到模型(为什么不是行为一样吗?)。我想做的只是在值满足输入要求时才实际改变“重量”。有什么想法吗?

1 个答案:

答案 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/

如果您有任何问题,请告诉我。