vuejs 的自我學習

一,綁定方法v-bind
1,綁定方法:<a v-bind:href="url"></a>
縮寫:<a :href="url"> </a>
2,監聽方法: <a v-on:click="do"></a>
縮寫:<a @click = "do"></a>
二,vue實例
1,構造器
var vm = new Vue({
//選項
})
縮寫 new Vue({
//選項
})
2,屬性和方法
3,條件語句v-if,v-else,v-else-if
4,根據條件展現元素v-show
example:
<body>
<div id="app">
<h1 v-show="ok">Hello!</h1>
</div>
 
<script>
new Vue({
el: '#app',
data: {
ok: true
}
})
</script>
</body>
5,循環語句v-for=「site in sites」
example1:
<div id="app"> <ol> <li v-for="site in sites"> {{ site.name }} </li> </ol> </div> <script> new Vue({ el: '#app', data: { sites: [ { name: 'Runoob' }, { name: 'Google' }, { name: 'Taobao' } ] } }) </script>
v-for 能夠經過一個對象的屬性來迭代數據
example2:能夠輸對象
<div id="app"> <ul> <li v-for="value in object"> {{ value }} </li> </ul> </div> <script> new Vue({ el: '#app', data: { object: { name: '菜鳥教程', url: 'http://www.runoob.com', slogan: '學的不只是技術,更是夢想!' } } }) </script>
example3:鍵值對(value,key)
<div id="app"> <ul> <li v-for="(value, key) in object"> {{ key }} : {{ value }} </li> </ul> </div>
 
<script> new Vue({ el: '#app', data: { object: { name: '菜鳥教程', url: 'http://www.runoob.com', slogan: '學的不只是技術,更是夢想!' } } }) </script>
 
example4:索引
<div id="app"> <ul> <li v-for="(value, key, index) in object"> {{ index }}. {{ key }} : {{ value }} </li> </ul> </div>
example4:循環整數
<div id="app"> <ul> <li v-for="n in 10"> {{ n }} </li> </ul> </div>
<script>
new Vue({ el: '#app' })
</script>
總結:v-for循環輸出,鍵值對,索引,整數,對象。vue中存在視圖模板template。
6,計算屬性computed,用於處理複雜邏輯,屬性默認getter,也存在setter。
區別:computed與methods,computed是將數據緩存而執行,methods在從新渲染時,函數從新調用執行,不緩存。
7,v-bind設置HTML樣式(style)和屬性(class)。返回結果能夠是字符串,對象或數組。
8,事件處理器v-on,經常使用於button,submit。
example:
<div id="app">
<button v-on:click="counter += 1">增長 1</button>
<p>這個按鈕被點擊了 {{ counter }} 次。</p>
</div>
 
<script>
new Vue({
el: '#app',
data: {
counter: 0
}
})
</script>
9,修飾符
(1)事件修飾符:.stop,.prevent,.capture,.self,.once;
<!-- 阻止單擊事件冒泡 --> <a v-on:click.stop="doThis"></a> <!-- 提交事件再也不重載頁面 --> <form v-on:submit.prevent="onSubmit"></form> <!-- 修飾符能夠串聯 --> <a v-on:click.stop.prevent="doThat"></a> <!-- 只有修飾符 --> <form v-on:submit.prevent></form> <!-- 添加事件偵聽器時使用事件捕獲模式 --> <div v-on:click.capture="doThis">...</div> <!-- 只當事件在該元素自己(而不是子元素)觸發時觸發回調 --> <div v-on:click.self="doThat">...</div> <!-- click 事件至少觸發一次,2.1.4版本新增 --> <a v-on:click.once="doThis"></a>
(2)按鍵修飾符:.enter,.tab,.delete,.esc,.space,.down,.left,.right,.ctrl,.alt,.shift,.meta
example;
<!-- 只有在 keyCode 是 13 時調用 vm.submit() --> <input v-on:keyup.13="submit">
example:
<p><!-- Alt + C --> <input @keyup.alt.67="clear"> <!-- Ctrl + Click --> <div @click.ctrl="doSomething">Do something</div>
10,表單:輸入框 input和textarea,複選框checkbox,單選按鈕radio
11,組件component(重點)
(1)全局組件component
註冊全局組件語法:Vue.component(tagName,options)
調用:<tagName></tagName>
example1:
<div id="app">
<runoob></runoob>
</div>
 
<script>
// 註冊
Vue.component('runoob', {
template: '<h2>自定義組件!</h2>'
})
// 建立根實例
new Vue({
el: '#app'
})
</script>
(2)局部組件child
<body>
<div id="app">
<runoob></runoob>
</div>
 
<script>
var Child = {
template: '<h1>自定義組件!</h1>'
}
 
// 建立根實例
new Vue({
el: '#app',
components: {
// <runoob> 將只在父模板可用
'runoob': Child
}
})
</script>
*重點(3)prop使用(prop驗證)
example:
Vue.component('example', { props: { // 基礎類型檢測 (`null` 意思是任何類型均可以) propA: Number, // 多種類型 propB: [String, Number], // 必傳且是字符串 propC: { type: String, required: true }, // 數字,有默認值 propD: { type: Number, default: 100 }, // 數組/對象的默認值應當由一個工廠函數返回 propE: { type: Object, default: function () { return { message: 'hello' } } }, // 自定義驗證函數 propF: { validator: function (value) { return value > 10 } } } })
註釋:prop驗證規則type:string,number,boolean,function,object,array
type 也能夠是一個自定義構造器,使用 instanceof 檢測。
12,自定義指令(directive)
<div id="app">
<p>頁面載入時,input 元素自動獲取焦點:</p>
<input v-focus>
</div>
 
<script>
// 註冊一個全局自定義指令 v-focus
Vue.directive('focus', {
// 當綁定元素插入到 DOM 中。
inserted: function (el) {
// 聚焦元素
el.focus()
}
})
// 建立根實例
new Vue({
el: '#app'
})
</script>
 
 
總結
vue組件
步驟:1.建立組件component。
example:js中
//組件建立
Vue.component('todo-item',{
props:['todo'],
template: '<li> {{todo.text}} </li>'
})
2.建立HTML
<div id="app-07">
<ol>
<todo-item v-for="item in items" v-bind:todo = "item"></todo-item>
</ol>
</div>
3.js中,邏輯綁定
example:
var app7 = new Vue({
el:'#app-07',
data: {
items:[
{text:'component'},
{text:'組件使用'},
{text:'dome'},
]
}
})
相關文章
相關標籤/搜索