【问题标题】:angular directive scope[attrs.ngModel] is not working角度指令范围 [attrs.ngModel] 不起作用
【发布时间】:2014-01-21 10:53:16
【问题描述】:

如果用户输入不是数字,我必须恢复为旧数字值。

从指令设置范围值不起作用。

http://jsfiddle.net/vfsHX/149/

app.directive('isNumber', function () {
    return {
  require: 'ngModel',
        link: function (scope, element, attrs) {
            scope.$watch(attrs.ngModel, function(newValue,oldValue) {
            var arr = String(newValue).split("");
            if (arr.length === 0) return;
            if (arr.length === 1 && (arr[0] == '-' || arr[0] === '.' )) return;
            if (arr.length === 2 && newValue === '-.') return;
            if (isNaN(newValue)) {
                console.log(oldValue);
                scope[attrs.ngModel] = oldValue;
            }
        });
    }
};
});

【问题讨论】:

    标签: angularjs angularjs-directive angularjs-scope


    【解决方案1】:

    使用 $setViewValue 可以解决问题

    http://jsfiddle.net/vfsHX/158/

    if(isNaN(newValue))             
    {
    ngModel.$setViewValue(oldValue);
    ngModel.$render();
    }
    

    【讨论】:

      【解决方案2】:

      您的模型是嵌套形式,因此当您尝试使用scope[attrs.ngModel] 访问时,您指的是不存在的模型。如果您直接提供参考,而不是使用嵌套的 javascript 模型,那么它的工作原理。在这里查看小提琴http://jsfiddle.net/ztUsc/1/

      【讨论】:

      • 但我真的很想用嵌套的 javascript 模型来做到这一点。该怎么做?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-20
      相关资源
      最近更新 更多