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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 第二章 數據綁定 >[success] 可在此處查看運行文檔中的代碼示例結果:[https://github.com/jianyaoo/Vue](https://github.com/jianyaoo/Vue) [toc] ## 1 - vue實例 每一個vue應用都是起始于先創建一個vue實例,創建方式如下,通過new關鍵字創建對象。 ``` var vm = new Vue({ el:"", data:"", ..... }) ``` >[info] 通過`new Vue`創建了一個vue的根實例。一個Vue應用一般由根實例、可嵌套的、可復用的組件樹組成 ## 2 - 響應式數據 >[info] 當一個Vue實例被創建的時候,它會將data對象中的所有屬性添加到Vue的響應式系統中,當數據發生改變時,視圖也會發生改變。當數據發生變化時,視圖會重新渲染。 **<span style="padding-top:15px;display:inline-block;">代碼實例</span>** ``` <body> <div id="app"> <p>{{msg}}</p> <button @click="handleClick">修改</button> </div> <script type="text/javascript"> var vm = new Vue({ el:"#app", data:{ msg:"hello vue", }, methods:{ handleClick(){ this.msg = "hello click"; }, } }) </script> </body> ``` >[danger] 需要注意的是:只有在創建實例時添加的data屬性值才會存在響應式系統中。如果是后期動態通過`vm.`的 方式添加上去的,則不會存在于響應式中 >**解決方式:盡量不要通過動態添加data屬性,如果在后期需要用到一個data屬性則在實例化時就聲明為相對應類型的空值即可。** ``` var vm = new Vue({ data:{ newTodoList:"", count:0, todos:[] } }) ``` **<div style="padding-top:15px;">阻止響應</div>** 如果定義的data對象使用了`Object.freeze()`,則會進行修改現在的屬性,這會直接導致數據無法在系統中進行響應式。該現象說明:無論是修改了屬性值還是修改了視圖的本質都是,先修改data屬性值,data屬性值發生變化觸發視圖修改。 ``` <body> <div id="app"> <p>{{msg}}</p> <button @click="handleClick">修改</button> </div> <script type="text/javascript"> var obj = { msg:"hello vue", } Object.freeze(obj); var vm = new Vue({ el:"#app", data:obj, methods:{ handleClick(){ this.msg = "hello click"; // 執行后顯示的依舊是hello vue }, } }) </script> </body> ``` ## 3 - 模板語法 ### 插值 在模板中數據綁定最常見的方式就是雙大括號法的文本賦值 ```html <span>hello,{{name}}</span> ``` Mustache 標簽將會被替代為對應數據對象上`name`屬性的值。無論何時,綁定的數據對象上`name`屬性發生了改變,插值處的內容都會更新。 在使用插值表達式時的兩種情況:`文本`,`原始HTML` #### 文本 **第一種:文本** >[info] 文本插值即插入到dom元素中的信息為文本格式,即純文本,不會對html代碼進行解析。 ```html <div id="app"> <p>{{msg}}</p> <p v-text='msg'></p> //兩者的效果一樣 </div> ``` #### HTML **第二種:原始HTML格式** >[info] 如果想要修改dom元素的innerHtml,即將data對象中html作為html渲染輸出 > ``` <p v-html="msg2"></p> ``` **代碼示例** ``` <body> <div id="app"> <p>{{msg}}</p> <p v-text="msg1"></p> <p v-html="msg2"></p> <button @click="handleClick">修改</button> </div> <script type="text/javascript"> var obj = { msg:"hello vue", msg1:"<h1>v-text指令</h1>", msg2:"<h1>v-html指令</h1>" } Object.freeze(obj); var vm = new Vue({ el:"#app", data:obj, methods:{ handleClick(){ this.msg = "hello click"; // 執行后顯示的依舊是hello vue }, } }) </script> </body> ``` **運行結果比較** ![](https://img.kancloud.cn/d1/60/d1600a545fa8a0223510ec9d9b1a15ab_264x182.png) >[danger] 在自己的站點直接渲染html是一件非常危險的事情,可能會導致跨站腳本攻擊。一定 **不要** 動態渲染用戶輸入的內容,只對自己信任的內容使用html渲染。 #### 特性 **特性** 使用插值語法只能是渲染內容,不能直接作用到html標簽上,如果想要對html標簽進行操作需要使用 `v-bind`指令。 ``` <div v-bind:id="app"></div> ``` #### 使用js表達式 在插值語法中允許使用簡單的js表達式,但是請注意**只能使用簡單的表達式,任何語句都不支持。流控制也不支持,需要使用三元表達式**。 ``` <p>{{msg.split(' ').reverse().join(',')}}</p> ``` >[info] msg = "hello vue" 顯示結果為vue,hello ### 指令 **<span style="padding-top:15px;display:inline-block;">什么是指令</span>** 指令是帶有`v-`前綴的特殊特性 **<span style="padding-top:15px;display:inline-block;">指令的預期值<span>** 指令的預期值是單個的JS表達式 **<span style="padding-top:15px;display:inline-block;">指令的職責<span>** 當表達式的發生變化時,將其產生的影響作用到dom上 #### 參數 >[info] 一個指令可以接受一個參數,以:的形式表示 #### 修飾符 修飾符是半角句號`.`指明的特殊后綴,用于表示當前指令應該以特殊方式進行綁定。
                  <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>

                              哎呀哎呀视频在线观看