我正在观看用户可以在输入字段中编辑的范围值。 我想确保newValue始终是一个数字,如果不是,请保留oldValue,直到用户键入正确的数字值。
我该怎么做?
我目前正在做的是(在指令的链接功能中):
scope.$watch('count',function(newValue,oldValue)
{
newValue=parseInt(newValue,10);
if(isNaN(newValue))
{
newValue=oldValue;
}
});
这是正确的方法,还是有更好的方法?
感谢。
答案 0 :(得分:8)
我会像$watch
那样写:
$scope.$watch('count',function(newValue,oldValue)
{
if(newValue !== undefined && !newValue.match(/^[\d]+$/g)){
$scope.count=oldValue;
}
});
演示 Plunker
答案 1 :(得分:2)
@Maxim解决方案的一个方面是它需要对模型进行硬编码。它有效,但改进的解决方案可能如下所示:
$scope.$watch('count',function(newValue,oldValue,scope) {
if(newValue !== undefined && !newValue.match(/^[\d]+$/g)){
scope[this.exp] = oldValue;
}
});