我的template
directive
<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;
};
我的undefined
方法中的值总是作为confirm
传递,但是当我在输入的ng-change
中调用相同的方法时,它会被传递。
<input ng-model="acc" type="number" ng-change="confirm(acc,3,17)" required />
为什么ng-class
无法获得正确的ng-model
值?
答案 0 :(得分:1)
在JavaScript中,您应该有acc的范围。 也使用data-ng-model而不是ng-model。
答案 1 :(得分:1)
使用acc
引用$scope
变量,而不是将其注入函数。
$scope.confirm = function(min, max) {
if (!$scope.acc) return false;
return ("" + $scope.acc).length < min || ("" + $scope.acc).length > max;
};
答案 2 :(得分:1)
(""+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>