vus.js基礎2html
mustache 語法中是支持寫js的vue
用法:web
內容: 必須加 {{ js語法 }}json
屬性: 屬性中屬性值能夠直接寫js語法,而且屬性值中的數據至關於全局變量數組
給一個標籤加一個自定義屬性/已有屬性app
img中的src就是已有屬性 <img src = "" /> //data-index就是自定義屬性 , web網頁中建議咱們使用data-形式來定義自定義屬性 <img data-index = "0" />
思考: Vue如今想要在html中使用本身的屬性,而且要和他的語法和數據結合?dom
咋整?ide
分析: 如何我可以標識出哪個屬性是具備vue標誌的那就行了,也就是屬性前加 v性能
<div v-html = "msg"> </div>
研究它js的支持性spa
總結;
指令的目的是作什麼: 操做DOM
解釋 : MVVM vm -> v 數據驅動
因此: 今天開始,咱們不想二階段同樣操做dom,改爲操做數據,數據要想操控DOM,那麼咱們須要依賴指令,由於指令是直接綁定在dom身上的
v-html 轉義輸出,也就是能夠解析 xml 數據
v-text: 非轉義輸出,也就是沒法解析 xml 類型數據
v-bind
將數據和屬性進行單向數據綁定: 將vue中數據賦值給屬性值
<img v-bind:src = "src" /> <div v-bind:class = ""> </div> <div v-bind:style = ""> </div>
簡寫形式
<img v-bind:src="src" alt=""> <img :src="src" alt="">
類名綁定
用法
對象形式用法
<p :class = "{ bg: true,size: true }"></p> <p :class = "{ bg: true,size: false }"></p> <p :class = "{ [classA]: true,[classB]: true }"></p>
數組形式用法
<p :class = "[ 'size','bg' ]"></p> <p :class = "[ classA,classB ]"></p> <p :class = "[ classA,classB,5>3?'a':'b']"> </p>
樣式綁定
用法
對象形式用法
<p :style = "{width: '100px',height: '100px',background: 'yellow'}"></p> <p :style = "styleObj"></p>
數組形式用法
<p :style = "[{width:'100px',height: '100px'},{ background: 'green'}]"></p> <p :style = "[size,bg]"></p>
v-if
v-else-if
v-else
v-show 條件展現
<h3> 條件渲染 - 單路分支 </h3> <p v-if = "flag"> A </p> <h3> 條件渲染 - 雙路分支 </h3> <p v-if = "flag"> A </p> <p v-else > B </p> <h3> 條件渲染 - 多路分支 </h3> <p v-if = "type === '美食'"> 美食 </p> <p v-else-if = " type === '遊戲' "> 遊戲 </p> <p v-else> 睡覺 </p> <h3> 條件展現 </h3> <p v-show = " showFlag "> 條件展現 </p>
思考總結
思考: v-if vs v-show 1. 效果看起來同樣 2. why Vue要出兩個類似的指令? v-if控制的是元素的存在與否 v-show控制的是元素的display:none屬性 思考? 若是出事條件爲假時? v-if v-show 誰的性能損耗較高? v-show 總結: 項目中如何選擇哪個? 頻繁切換用 v-show 若是不是很頻繁的切換,那咱們用 v-if
v-for 指令
<h3> 數組 </h3> <ul> <li v-for = "(item,index) in arr" :key = " index "> {{ item }} -- index{{ index }} </li> </ul> <h3> 對象 </h3> <ul> <li v-for = "(item,key,index) of obj" :key = "index"> {{ item }} -- {{ key }} -- {{ index }} </li> </ul> <h3> json </h3> <ul> <li v-for = "item in json" :key = "item.id"> <span> 商品名稱: {{ item.shop_name }} </span> <span> 商品價格: {{ item.price }} </span> </li> </ul> <h3> 循環嵌套 </h3> <ul> <li v-for = "item in lists" :key = "item.id"> <h3> 商品類型: {{ item.shop_name }} </h3> <ul> <li v-for = "item in item.type" :key = "item.id"> <p> 製造商: {{ item.maker }} </p> </li> <!-- <li v-for = "ele in item.type" :key = "ele.id"> <p> 製造商: {{ ele.maker }} </p> </li> --> </ul> </li> </ul> <h3> 循環number / string </h3> <p v-for = "item in 10"> {{ item }} </p> <p v-for = "item in 'abc'"> {{ item }} </p>
總結:
簡寫 <button v-on:click = 'fn'> 點擊 </button> <button @click = 'fn'> 點擊 </button> <button @click = "eventHandler"> 事件對象 </button> <button @click = "argumentHandler( a,b,$event )"> 事件參數 </button> //當一個事件處理程序中有多個參數,其中一個參數是事件對象式,咱們在調用這個方法時,要添加一個實際參數 $event 與之對應 new Vue({ el: '#app', data: { a: 10, b: 20 }, methods: { // methods稱之爲方法 ,裏面存儲是事件處理程序 fn () { alert('事件') }, eventHandler ( e ) { console.log( e ) }, argumentHandler ( a,b,e ) { console.log( e ) console.log( a + b ) } } })
例:html <div id="app"> <h3> 鍵盤修飾符 </h3> <input type="text" @keyUp.13="getValue"> <input type="text" @keyUp.enter="getValue"> </div>
Vue.config.keyCodes.f1 = 112 new Vue({ el: '#app', methods: { getValue(e) { // if ( e.keyCode === 13 ) { // console.log('執行了') // } console.log('執行了') } } })