返回仅具有后链接功能的对象相当于什么?

时间:2014-12-29 16:31:57

标签: angularjs angular-directive

Angular JS documentation for $ compile中声明:

  

编译函数可以有一个返回值,可以是a   功能或对象。

     

返回(post-link)函数 - 相当于注册   当通过配置对象的link属性链接函数时   编译函数为空。

     

返回一个对象,其中包含通过pre和post注册的函数   properties - 允许您控制何时应该使用链接功能   在链接阶段调用。请参阅有关预链接的信息   下面的后连接功能。

The nitty-gritty of compile and link functions inside AngularJS directives上的

基于作为返回对象的编译函数的示例

function createDirective(name){  
  return function(){
    return {
      restrict: 'E',
      compile: function(tElem, tAttrs){
        console.log(name + ': compile');
        return {
          post: function(scope, iElem, iAttrs){
            console.log(name + ': post link');
          }
        }
      }
    }
  }
}

我对文档的解释是允许返回函数,并假设它是一个后链接函数,即以下内容是等效的:

function createDirective(name){  
      return function() {
        return {
          restrict: 'E',
          compile: function(tElem, tAttrs){
            console.log(name + ': compile');
            return function(scope, iElem, iAttrs){
                console.log(name + ': post link');
              }
          }
        }
      }
    }

这是对的吗?

1 个答案:

答案 0 :(得分:0)

根据提供的定义,这将是等效的:

function createDirective(name){  
    return function() {
        return {
            restrict: 'E',
            link: function(scope, element, attrs){

            }
        }
    }
}

如定义中所述,仅当compile为空时,返回post link与link相同...所以上面有link属性。您可以看到函数签名甚至是相同的,只是不同的变量名称。