我有一个自定义指令,根据他的值更改视图值添加类到input:text
。
restrict: 'A',
require : 'ngModel',
link : function(scope, element, attrs, modelCtrl) {
function apply(input) {
// Simplified ..
if ( input!=='Ooops' && isNaN(parseFloat(input) ) {
modelCtrl.$setViewValue('Ooops');
element.addClass('is-nan');
return undefined;
}
}
modelCtrl.$parsers.push(apply);
}
编辑值时,它可以正常工作。但是,当元素由Angular绑定时,我想应用相同的逻辑,以便设置类和视图值。
基本上我想在指令链接时调用apply
。所以我尝试在apply(element.val())
函数的末尾添加link
,但element.val()
始终为空。
我认为我应该使用另一个生命周期钩子来调用此方法但无法找到它。一个可能的解决方案是使用compile
而不是link
,但由于我不进行DOM转换,因此不需要这样做。
我已尝试过modelCtrl.$observe('ngModel', ..)
但是再次输入值为空。
如何在链接指令时应用视图逻辑?
由于
答案 0 :(得分:0)
使用$ observe可以正常工作。
attrs.$observe('ngModel', function(value){
apply(modelCtrl.$modelValue);
});
(我的apply
函数错误,并为所有值返回'undefined'。)