问题:
我尝试使用$scope.$watch
方法对数字输入中使用的ng模型使用严格的属性,例如max
,min
,maxlength
和{{1 }}
当输入中插入的值超过任何属性时,ng-model将检索step
。
因此,最终会发生什么:每当我们更改输入中的值时,都会触发undefined
。一旦值未定义,只有当插入的值再次有效时才会再次触发,换句话说,遵循属性规则(max,min,maxlength和step)。
E.g。
用户输入: -2,4
- >系统会触发$scope.$watch
,并将$scope.$watch
输出为newValue
。
用户添加了一个新数字: -2,44 - &GT; <{1}}不会再以这种方式触发。
main.js
undefined
**的index.html
$scope.$watch
问题:即使在未定义的$scope.$watch("user.input.base.sphere", function(newValue, oldValue) {
console.log(newValue);
}
<input
ng-cloak
type="number"
ng-class="user.settings.input.sphere.class"
autocomplete="off"
required
name="sphere"
id="in-sphere"
title="Sphere"
step="{{user.filter.sphere.step}}"
min="{{user.filter.sphere.min}}"
max="{{user.filter.sphere.max}}"
maxlength="{{user.filter.sphere.maxlength}}"
placeholder="{{user.filter.sphere.placeholder}}"
ng-model="user.input.base.sphere"
select-on-click
sphere>
答案 0 :(得分:1)
您可以将以下函数附加到ng-keyup
指令。此函数将获取对表单控件的引用,并读取用户键入的值,即使模型中的值尚未更新。
$scope.changeHandler = function (a) {
var element = angular.element(document.querySelector('#in-sphere'))[0];
console.log(element.value);
}
使用以下方法将其附加到您的表单控件:
ng-keyup='changeHandler()'