获取指令中的ngModel的初始值

时间:2014-05-09 05:27:41

标签: angularjs

我有一个需要ngModel的指令。该指令修改了ngModel中存储的值(它实现了文本的就地编辑)。在我的link函数中,我需要在更改之前获取ngModel的值。

我尝试查看ngModel.$viewValuengModel.$modelValue。它们最终都获得了模型的内容,但是在指令的生命周期的开始,它们获得原始的未处理的角度表达式,例如{{user.name}}。我无法找到确定的方法 表达式处理完毕后。

有什么想法吗?

directive('test', function() {
    return {
        restrict: 'A',
        require: 'ngModel',
        link: function(scope, element, attrs, ngModel) {

        }
    };
})

1 个答案:

答案 0 :(得分:7)

使用$parse服务:

app.directive('test', function($parse) {
  return {
    link: function (scope, element, attrs) {

      var modelGetter = $parse(attrs.ngModel);
      var initialValue = modelGetter(scope);

    }
  };
});

或者:

app.directive('test', function($parse) {
  return {
    compile: function compile(tElement, tAttrs) {

      var modelGetter = $parse(tAttrs.ngModel);

      return function postLink(scope, element) {

        var initialValue = modelGetter(scope);

      };
    }
  };
});

演示: http://plnkr.co/edit/EfXbjBsbJbxmqrm0gSo0?p=preview