<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          實(shí)現(xiàn) MVVM 類 Vue 迷你框架(六)

          共 2361字,需瀏覽 5分鐘

           ·

          2021-03-29 21:11

          如何實(shí)現(xiàn) MVVM 類 Vue 迷你框架(六)

          我們先來講講怎么處理 model 以及事件:

          • model 處理跟 text,html 處理相似
          • 事件處理需要找到 @ 屬性的事件,給對(duì)應(yīng)的節(jié)點(diǎn)添加事件監(jiān)聽器
          // 節(jié)點(diǎn)元素編譯
          class Compile {
           compileElement(node) {
               const nodeAttrs = Array.from(node.attributes);
                nodeAttrs.forEach(attr => {
                  const {name, value} = attr;
                   // 指令處理
                   if(name.startWith('m-')) {
                    const dir = this[name.slice(2)]; // 找出指令方法
                     dir && dir(node, value);
                   }
                   // 事件處理
                   if(name.startWith('@')) {
                    // 找出開頭是 @
                     const dir = name.slice(1);
                     // 事件監(jiān)聽
                     this.eventHandler(node, value, dir);
                   }
                })
             }
             // 綁定監(jiān)聽器
             eventHandler(node,value,dir) {
               const { methods } = this.$vm.$options;
                const fn = methods && methods[value];
                fn && node.addEventListener(dir, fn.bind(this.$vm));
             }
          }

          解析 model

          modelUpdater(node, val) {
           node.value = val;
          }


          model(node, key) {
           this.update(node, key, 'model');
             node.addEventListener('input', e=>{
               this.$vm[key] = e.target.value;
             })
          }


          瀏覽 45
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  一本道精品在线 | 中文无码日本高潮喷水 | 国产免费观看av 国产免费无码视频 | 操逼二区| 青青青青青操久免费观看电视剧 |