Angular - 不使用$ parsers更新模型

时间:2014-09-26 17:01:33

标签: javascript angularjs

所以我知道通过使用$ parsers,我可以使模型与视图值不同。

但是如果我想在不使用$ parsers的情况下进行模型更改呢?

例如:

HTML

<input tel-input ng-model="data.phone">
{{data.phone}}

JS

.directive('telInput', function($compile) {
  return {
    restrict: 'A',
    scope: {
      ngModel: '='
    },
    link: function(scope, elem, attrs) {
      elem.on('paste', function() {
        scope.ngModel = 'special model value after pasting';
      });
    }
  };
});

这个问题是当scope.ngModel = 'pasting not allowed发生时,它会改变输入中的值。

使用$ parsers,它会更改模型中的值,但视图值保持不变。

没有任何$ setModelValue方法,看起来它可以用于此目的。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

试试这个,

.directive('telInput', function() {
   return {
     restrict: 'A',
     require: 'ngModel',
     link: function(scope, elem, attrs, ngModel) {
       elem.on('paste', function() {
         ngModel.$setViewValue('special model value after pasting');
         ngModel.$render();
       });
      }
    };
  });