如何在模型绑定后重新运行指令的link函数
How to re -run the link function of directive after model binding
我有以下代码指令
app.directive('formControl', function () {
return {
restrict: 'C',
link: function (scope, element, attrs) {
// Add class filled to form-control's that have a value
if (element.val()) {
element.parent().addClass('filled');
}
element.bind('blur', function (e) {
var input = angular.element(e.currentTarget);
if (input.val()) {
input.parent().addClass('filled');
} else {
input.parent().removeClass('filled');
}
input.parent().removeClass('active');
}).bind('focus', function (e) {
var input = angular.element(e.currentTarget);
input.parent().addClass('active');
}).bind('change',function(e) {
// Add class filled to form-control's that have a value
var input = angular.element(e.currentTarget);
input.parent().addClass('active');
} );
}
};
});
//示例指令
<div class="form-group">
<label for="lastname" class="control-label">Phone number</label>
<input type="text" class="form-control" name="phonenumber" id="phonenumber" ng-model="user.phone_number" required maxlength="75">
</div>
这个指令的目的很简单,根据几个事件和值状态给目标对象添加一些css类。
如果没有任何值,这个指令也可以正常工作。但是如果我有一个通过模型绑定填充的值(不是通过键盘,而是通过模型绑定)。这行不通。
Ie。我想执行代码"input.parent().addClass('active');"当指令/输入字段通过模型绑定填充值
我尝试了更改事件,但它不工作
我认为您需要的是以某种方式获得ng-model
设置的绑定,并在模型更改时做出反应。ng-model
暴露了它的NgModelController,它反过来暴露了模型值,你可以$watch
。像这样:
app.directive('formControl', function () {
return {
restrict: 'C',
require: '?ngModel', // the (optional) ng-model on the same element
link: function (scope, element, attrs, ngModel) {
[...]
if (ngModel) {
scope.$watch(function() {
return ngModel.$modelValue;
}, function(newValue, oldValue) {
input.parent().addClass('active');
})
}
}
};
});
相关文章:
- "ctrl”;在指令中的LINK中未定义
- 放在另一个指令中的指令's的link()方法不呈现
- 指令的link()中的数据绑定工作不正常
- 如何在angular指令的link函数中定义angular指令
- 如何在link中访问angular指令隔离的作用域变量?
- 如何在指令的link函数中对绑定对象做出反应
- 当使用$compile以编程方式创建指令时,如何调用link函数?
- AngularJS指令——在作用域参数改变时重新运行link函数
- Angular没有从指令中调用link函数
- 如何在指令link函数中单元测试Angular的routechangessuccess
- 将函数表达式存储在angularjs指令的link函数中,并通过ng-click使用它
- 重写Angular指令link
- 角指令中link和controller作用域共享的混淆
- angularjs指令中的Link函数不起作用
- 如何从link函数访问与指令关联的控制器实例?
- Angularjs指令在link函数中没有响应事件绑定
- 在{}和link中为angular指令定义独立作用域变量的区别
- 当路由改变时,重新运行所有angular object指令(不仅仅是link函数)
- 如何在指令link中访问ngModel的子引用
- Angular注入指令link函数到根作用域