Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度定向链接函数从不运行_Javascript_Angularjs_Angularjs Directive - Fatal编程技术网

Javascript 角度定向链接函数从不运行

Javascript 角度定向链接函数从不运行,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我遵循ng bbok的教程,在指令定义中插入一个空的compile函数,然后插入link函数。这样,链接函数中的代码就永远不会执行。最后我发现这是因为空的编译函数,当我神奇地删除它时,链接被执行了。为什么会这样?我使用Angular 1.3 { compile:function(){}, 链接:函数($范围、元素、属性){ 变量大小=attributes.gravatarSize | | 80; var hash=md5.digest_s($scope.email.from[0]); $scop

我遵循ng bbok的教程,在指令定义中插入一个空的
compile
函数,然后插入
link
函数。这样,
链接
函数中的代码就永远不会执行。最后我发现这是因为空的
编译
函数,当我神奇地删除它时,
链接
被执行了。为什么会这样?我使用Angular 1.3

{
compile:function(){},
链接:函数($范围、元素、属性){
变量大小=attributes.gravatarSize | | 80;
var hash=md5.digest_s($scope.email.from[0]);
$scope.gravatarImage=url+hash+'?size='+size;
}

}

您不能同时定义
编译
属性和
链接
。如果要使用
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) { ... }
  }
}

检查它是按设计进行的。引述:

链接 仅当未定义compile属性时,才使用此属性