gpt4 book ai didi

javascript - AngularJS - 覆盖指令的编译函数不调用链接函数?

转载 作者:行者123 更新时间:2023-11-30 17:37:26 25 4
gpt4 key购买 nike

我通过覆盖指令的编译来自定义指令模板,但是它在运行编译函数后不会调用链接函数。

angular.module('app').directive('ngValidate', ['$compile', function($compile){
return {
restrict: 'A',
require: '?ngModel',
compile:function($element, $attrs, linker){
// this run
console.log('compile>>>');

// append error message
$element.append('<div></div>');
$element.bind('blur',function(){
console.log('onblur');
});

$compile($element.contents());
},
controller: function($scope, $element, $attrs){
// this run
console.log('controller>>>');
},
link: function($scope, $element, $attrs, ctrl) {
// this doesn't run
console.log('link>>>');
}
}
}]);

我需要在编译后运行链接的原因是我想访问范围,可以从编译访问范围吗?

最佳答案

如评论中所述,如果您有一个编译函数,它应该返回链接函数,而不是在指令定义对象上单独定义它。

angular.module('app', []).directive('ngValidate', ['$compile', function($compile){
return {
restrict: 'E',
require: '?ngModel',
compile:function($element, $attrs, linker){
// this run
console.log('compile>>>');

// append error message
$element.append('<div></div>');
$element.bind('blur',function(){
console.log('onblur');
});

$compile($element.contents());
return function($scope, $element, $attrs, ctrl) {
// this doesn't run
console.log('link>>>');
}
},
controller: function($scope, $element, $attrs){
// this run
console.log('controller>>>');
}
}
}]);

http://jsfiddle.net/uGk4f/

关于javascript - AngularJS - 覆盖指令的编译函数不调用链接函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21746718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com