我有一个需要ngModel
的指令。该指令修改了ngModel
中存储的值(它实现了文本的就地编辑)。在我的link
函数中,我需要在更改之前获取ngModel
的值。
我尝试查看ngModel.$viewValue
和ngModel.$modelValue
。它们最终都获得了模型的内容,但是在指令的生命周期的开始,它们获得原始的未处理的角度表达式,例如{{user.name}}
。我无法找到确定的方法
表达式处理完毕后。
有什么想法吗?
directive('test', function() {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, element, attrs, ngModel) {
}
};
})
答案 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);
};
}
};
});