<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                **1 標簽掃描源代碼(18 scanTag.js)** ~~~ function scanTag(elem, vmodels, node) { var a = elem.getAttribute("ms-skip") var b = elem.getAttributeNode("ms-important") var c = elem.getAttributeNode("ms-controller") if (typeof a === "string") { return } else if (node = b || c) { var newVmodel = avalon.vmodels[node.value] if (!newVmodel) { return } vmodels = node === b ? [newVmodel] : [newVmodel].concat(vmodels) elem.removeAttribute(node.name) elem.classList.remove(node.name) createSignalTower(elem, newVmodel) } scanAttr(elem, vmodels) } ~~~ **2 文件分析** `function scanTag(elem, vmodels, node) {}` >[info] scanTag()完成elem標簽內容的掃描,并添加信息到vmodels中 elem:待掃描標簽入口 vmodels:可合并vmodel信息 node:?? ~~~ var a = elem.getAttribute("ms-skip") var b = elem.getAttributeNode("ms-important") var c = elem.getAttributeNode("ms-controller") ~~~ >[info] a,b,c分別是ms-skip,ms-important,ms-controller三個屬性 ms-skip:忽略掃描 ms-important:掃描信息不繼承 ms-controller:掃描信息可以繼承 >[info] getAttribute,getAttributeNode見基礎原理的DOM接口 `if (typeof a === "string") {` >[info] skip標簽 直接返回,不掃描 `} else if (node = b || c) {` >[info] important controller標簽 進行掃描處理 node賦值為獲取的屬性對象,屬性對象間基礎原理的DOM接口 `var newVmodel = avalon.vmodels[node.value]` >[info] 根據屬性對象可知node.value的值是屬性的值,如下面的一段代碼。 node.value即為model。所也就是avalon.define()的$id參數。根據avalon.define可知,$id是vmodels數組對應vmodel的索引。 ~~~ <div ms-controller="model"> </div> ~~~ ~~~ if (!newVmodel) { return } ~~~ >[info] 獲取vmodel失敗直接返回,也就是說掃描當前標簽沒有可以保存vmodel。 `vmodels = node === b ? [newVmodel] : [newVmodel].concat(vmodels)` >[info] 等價于 if(node===b){[newVmodel]]}else if(node===c){[newVmodel].concat(vmodels)} 所以ms-important 屬性值標簽不繼承 ms-controller 屬性值標簽可以繼承 `elem.removeAttribute(node.name)` >[info]移除elem的ms-skip/ms-important/ms-controller屬性。這里修改了標簽的屬性信息 `elem.classList.remove(node.name)` >[info]移除elem的class樣式控制的ms-skip/ms-important/ms-controller屬性。這里修改標簽的css `createSignalTower(elem, newVmodel)` >[info] 這里調用scan.js文件定義的createSignaTower()接口 分析可知為elem添加了avalonctrl屬性, 并且在vmodel的$events設置了expr屬性。 >[info] 上面的一段代碼用來分析標簽的ms-skip,ms-importan,ms-controller三個屬性,這三個屬性是v層的入口標記。 `scanAttr(elem,vmodels)` >[info] 進入普通屬性的掃描 **3 總結** ms-skip:忽略標簽內容掃描 ms-important:不繼承掃描 ms-controller:繼承掃描
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看