<body> <div id="main"> // 變量 {{ message }} <br/> // 表達式 {{ number + 1}} </div> </body> <script> const vm = new Vue({ el: '#main', data: { message: 'Welcome to Chivalrous Island!', number: 7 }, }) </script>
dangerHTMl: "<span>0085</span>"
這句代碼改變一下 dangerHTML: "<span onclick='alert(0085)'>0085</span>"
,這時候的當咱們點擊時它執行了它裏面的一個代碼會彈出一個框,這是很危險的。像不少個XSS攻擊就是用的這種方法,因此對於v-html咱們仍是要慎用。 <div v-html="dangerHTMl"></div> data: { ... dangerHTMl: "<span>0085</span>" }
<div v-bind:id="id" v-html="dangerHTML"></div> data: { ... id: 'oldId' }
當data裏面的數據改變時,它的Id也會隨之改變。css
<div v-bind:id="id"> <button v-on:click="changeId">changeId</button> </div> methods: { changeId: function() { this.id = 'newId'; } }
除了Id的綁定以外,還有其餘的一些綁定:html
<button v-bind:disabled="idDisabled" v-on:click="changeId">changeId</button>
data: { json: { key1: 1, key2: 2 } }, methods: { ... computed: { getJsonkey1: function() { return this.json.key1; } }, // 計算屬性的緩存須要藉助watch函數的監聽 watch: { json: { handler: function(newVal,preVal){ console.log(JSON.stringify(preVal)); console.log(JSON.stringify(newVal)); }, deep: true, } } }
在vue裏面監聽json須要深度監聽,由於它們是在同一個內存空間裏面,地址是同樣的。vue
這個時候打印出來的,咱們會發現它們的新值和舊值都是同樣的,這是因爲它們是同一個內存地址咱們訪問時值已經改變。若是咱們要改變兩次的值不同,那麼咱們須要用到計算屬性裏面的緩存。json
好比先不監聽json,而是監聽getJsonkey1的方法,將watch的json變成getJsonkey1,這樣的話咱們就能夠獲得先後的兩個值。
緩存
testVIf: 'A', <button v-if="testVIf === 'A'">A</button> <button v-else-if="testVIf === 'B'">B</button> <!-- 當判斷條件都不知足時顯示 <button v-else>C</button>
主要分爲點擊事件和鍵盤事件。安全
<button v-on:click.stop="doAgain"></button>
<form v-on:submit.prevent="onSubmit"></form>
<button v-on:click.stop.prevent="contact"></button>
<form v-on:submit.prevent></form>
按鍵修飾符(鍵盤事件):函數
keyup(e) { alert(JSON.stringify(e)); } <input v-on:keyup.enter="keyup" type="text">keyup監聽的是一個全部的鍵盤事件,若是咱們只想監聽某一個事件,那麼咱們能夠在
v-on:keyup
後面添加下面屬性,而後點擊觸發便可。 除此以外,對於下面的某一事件監聽咱們能夠輸入它對應的鍵盤碼,好比enter對應的是13,v-on:keyup.13="keyup"
一樣的咱們也是點擊enter觸發事件。例如一個輸入框,當咱們輸入一個值時,咱們綁定的數據會變,而當咱們手動的去改動這個值的時候,輸入框裏面的值也會隨之改變。this
v-model,不只能夠綁定value,還能夠綁定表單裏面的一些其餘屬性checked和selected,表單元素除了輸入框以外好比複選框、單選框、下拉框都是能夠的。spa
輸入框數據的雙向綁定:雙向綁定
<input v-model="inputValue" type="text"> <!-- 點擊事件 --> <button @click="changeInputValue">changeInputValue</button>
data: { ... inputValue: 10805, } methods: { ... // 當咱們點擊按鈕時,觸發changeInputValue,實現累加 changeInputValue: function() { this.inputValue++; } } watch: { ... inputValue: function() { console.log(this.inputValue); } }
複選框:
<input v-model="checkboxValue" type="checkbox"> data: { // 默認選中 checkboxValue: true }