我的指令
下面有一个模板
<input ng-model="acc" type="number" required />
<p class="input-details" ng-class="{'has-error': confirm(acc, 3, 17)}"></p>
我的指令 Controller
函数中有一个这样的方法
$scope.confirm= function(value, min, max) {
if (!value) return false;
return ("" + value).length < min || ("" + value).length > max;
};
在我的 confirm
方法中,该值始终作为 undefined
传递,但是当我在输入的 ng-change
中调用相同的方法时就像下面这样,它已经通过了。
<input ng-model="acc" type="number" ng-change="confirm(acc,3,17)" required />
为什么 ng-class
没有获得正确的 ng-model
值?
最佳答案
(""+3).length = 1 || (""+17).length = 2
由于类型转换,请参阅 codepen,例如,将输入的数字调高,看看 (""+acc).length 等于什么以及如何修复 https://codepen.io/anon/pen/vKQZoR
app.controller('classTesterCtrl', function($scope, $log){
$scope.confirm= function(value, min, max) {
if($scope.acc < 3 || $scope.acc > 17){
$scope.valid = false;
} else {
$scope.valid = true;
}
};
});
<div ng-app="modelTest">
<div ng-controller="classTesterCtrl">
<input ng-model="acc" type="number" ng-change="confirm()" required />
<p class="input-details" ng-class="{'has-error': valid}"></p>
{{(""+acc).length}}
{{acc}}
{{valid}}
</div>
</div>
关于javascript - ng-model 未在 has-error 类中传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38836104/