Angular指令链接函数永远不会运行

时间:2015-03-15 13:40:16

标签: javascript angularjs angularjs-directive

我按照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; } }

2 个答案:

答案 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;
    }
}

或定义prepost(链接)功能:

compile: function compile(tElement, tAttrs, transclude) {
  return {
    pre: function preLink(scope, iElement, iAttrs, controller) { ... },
    post: function postLink(scope, iElement, iAttrs, controller) { ... }
  }
}

检查documentation

答案 1 :(得分:0)

这是通过设计发生的。引用$compile docs

  

链路

     

仅当未定义编译属性时才使用此属性。