zoukankan      html  css  js  c++  java
  • angular学习笔记(三十)-指令(7)-compile和link(1)

    这篇主要讲解指令中的compile,以及它和link的微妙的关系.

    link函数在之前已经讲过了,而compile函数,它和link函数是不能共存的,如果定义了compile属性又定义link属性,那么link属性的定义会被忽略.原因继续看讲解:

    1.compile的返回值:compile函数返回值有两种可能

    (1).返回pre-link函数和post-link函数:

    一种是返回一个对象,对象具有两个方法,第一个方法是pre-link函数,第二个方法是post-link函数.

    compile:function(tEle,tAttrs,linker){
      return {
          pre:function(scope,iEle,iAttrs,ctrl,linker){
           },
        post:function(scope,iEle,iAttrs,ctrl,linker){
        }
       }
    }

    (2).只返回post-link函数:

    一种是只返回一个函数,这样的话,相当于pre-link函数不定义,只定义了一个post-link函数.如果compile函数没有定义任何返回值,那么,指令的link函数就会充当post-link函数.所以,如果compile已经定义了返回值,那么,再定义link函数,link函数就会被忽略.

    compile:function(tEle,tAttrs,linker){
      return function(scope,iEle,tAttrs,ctrl,linker){
       }
    }

    2.compile函数有三个参数:tEle,tAttrs,linker:

    (1)tEle:指令元素的jqLite包装.

    (2)tAttrs:指令元素的属性的集合

    (3)linker函数:请参考:angular学习笔记(三十)-指令(6)-transclude()方法(又称linker()方法)-模拟ng-repeat指令

  • 相关阅读:
    P2679 子串
    线段树优化建边
    P2444 [POI2000]病毒
    P3966 [TJOI2013]单词
    4327: JSOI2012 玄武密码
    UVA1449 Dominating Patterns
    P1250 种树
    P2255 [USACO14JAN]记录奥林比克
    SP283 NAPTIME
    P3436 [POI2006]PRO-Professor Szu
  • 原文地址:https://www.cnblogs.com/liulangmao/p/3980144.html
Copyright © 2011-2022 走看看