我按照ng-bbok的教程,在指令定义中插入了一个空的compile
函数,然后是link
函数。有了这个,link
函数中的代码永远不会被执行。最后我发现这是因为空compile
函数,当我神奇地删除link
执行时。为什么会这样?我正在使用Angular 1.3
{
compile: function() {},
link: function($scope, element, attributes) {
var size = attributes.gravatarSize || 80;
var hash = md5.digest_s($scope.email.from[0]);
$scope.gravatarImage = url + hash + '?size=' + size;
}
}
答案 0 :(得分:2)
您无法定义compile
属性和link
。如果要使用compile
函数,可以返回链接函数:
compile: function() {
return function($scope, element, attributes) {
var size = attributes.gravatarSize || 80;
var hash = md5.digest_s($scope.email.from[0]);
$scope.gravatarImage = url + hash + '?size=' + size;
}
}
或定义pre
和post
(链接)功能:
compile: function compile(tElement, tAttrs, transclude) {
return {
pre: function preLink(scope, iElement, iAttrs, controller) { ... },
post: function postLink(scope, iElement, iAttrs, controller) { ... }
}
}
答案 1 :(得分:0)
这是通过设计发生的。引用$compile docs:
链路
仅当未定义编译属性时才使用此属性。