<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                >[success] # 了解 -- 響應式工作原理(一) ~~~ 1.簡單視圖更新例子,這里先明白是當我們賦值的時候視圖發生變化,因此下面案例在set ~~~ >[danger] ##### 單個數據簡單vue視圖響應模型 ~~~ <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Examples</title> </head> <body> <div id="app">hello</div> <button id="changeViwe">觸發視圖更新 </button> </body> <script> // 模擬vue中的data 數據 let data = { msg: 'hello' } // 模擬vue 的實例 let vm = {} // 使用 Object.defineProperty 做數據劫持 // 也就是當數據改變 觸發一些關聯動作 Object.defineProperty(vm, 'msg', { enumerable: true, configurable: true, get() { return data.msg }, set(newValue) { if (newValue === data.msg) return data.msg = newValue // 觸發視圖上數據變化 document.querySelector('#app').textContent = data.msg } }) document.querySelector('#changeViwe').onclick = () => { vm.msg = '視圖更新' } </script> </html> ~~~ >[danger] ##### 響應對象中全部鍵值對 ~~~ <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Examples</title> </head> <body> <div id="app">hello</div> <input id="changeName" value="" /> <input id="changeMsg" value="" /> </body> <script> // 模擬vue中的data 數據 let data = { msg: 'hello', name: 'wang' } // 模擬vue 的實例 let vm = {} proxyData(data) function proxyData(data) { // 給每個 都通過Object.defineProperty 綁定get 和set Object.keys(data).forEach((key) => { Object.defineProperty(vm, key, { enumerable: true, configurable: false, get() { return data[key] }, set(newValue) { if (newValue === data[key]) return data[key] = newValue document.querySelector('#app').textContent = `${data.name} 說 ${data.msg}` } }) }) } document.querySelector('#changeMsg').addEventListener('input', (e) => { vm.msg = e.srcElement.value }) document.querySelector('#changeName').addEventListener('input', (e) => { vm.name = e.srcElement.value }) </script> </html> ~~~
                  <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>

                              哎呀哎呀视频在线观看