在angularJS指令中使用链接器函数

时间:2014-03-11 23:32:16

标签: angularjs angularjs-directive

我最近一直在玩角度指令,关于链接和编译功能我有几个问题。

我有以下两个指令,它们具有相同的功能:

App.directive('repeatX', function(){
  return {
    transclude: 'element',
    compile: function(element, attr, linker){  
      console.log('Compile repeatX');
      return function(scope, $element, attrs, ctrl){
        console.log('Link repeatX');
        var parent = $element.parent();

        for(var i = 0; i < Number(attrs.repeatX) - 1;i++){
          var childScope = scope.$new();
          linker(childScope, function(clone){
            $element.after(clone.attr('repeat-x', 0));
          });
        }
      }
    }
  }
});

App.directive('repeatX2', function(){
  return {
    compile: function(element, attrs){
      console.log('Compile repeatX2');
      for(var i = 0; i < Number(attrs.repeatX2) - 1;i++){
        element.after(element.clone().attr('repeat-X2', 0));
      }

      return function(){
        console.log('Link repeatX2');
      }
    }
  };
});

似乎这两个指令几乎都在做同样的事情,但我完全不明白为什么Compile repeatX2显示n次,而Compile repeatX只显示一次。

第二个问题是,linker函数的确切工作是什么?

我在这里有一个工作示例:http://jsbin.com/rugohido/10/edit

0 个答案:

没有答案