## v-for、v-on、v-model
### [用 `v-for` 把一個數組對應為一組元素](https://cn.vuejs.org/v2/guide/list.html#用-v-for-把一個數組對應為一組元素 "用 v-for 把一個數組對應為一組元素")
我們用 `v-for` 指令根據一組數組的選項列表進行渲染。`v-for` 指令需要使用 `item in items` 形式的特殊語法,`items` 是源數據數組并且 `item` 是數組元素迭代的別名。
~~~
<ul id="example-1">
<li v-for="item in items">
{{ item.message }}
</li>
</ul>
~~~
~~~
var example1 = new Vue({
el: '#example-1',
data: {
items: [
{ message: 'Foo' },
{ message: 'Bar' }
]
}
})
~~~
在 `v-for` 塊中,我們擁有對父作用域屬性的完全訪問權限。`v-for` 還支持一個可選的第二個參數為當前項的索引。
~~~
<ul id="example-2">
<li v-for="(item, index) in items">
{{ parentMessage }} - {{ index }} - {{ item.message }}
</li>
</ul>
~~~
~~~
var example2 = new Vue({
el: '#example-2',
data: {
parentMessage: 'Parent',
items: [
{ message: 'Foo' },
{ message: 'Bar' }
]
}
})
~~~
### [一個對象的 `v-for`](https://cn.vuejs.org/v2/guide/list.html#一個對象的-v-for "一個對象的 v-for")
你也可以用 `v-for` 通過一個對象的屬性來迭代。
~~~
<ul id="v-for-object" class="demo">
<li v-for="value in object">
{{ value }}
</li>
</ul>
~~~
~~~
new Vue({
el: '#v-for-object',
data: {
object: {
title: 'How to do lists in Vue',
author: 'Jane Doe',
publishedAt: '2016-04-10'
}
}
})
~~~
結果:
你也可以提供第二個的參數為 property 名稱 (也就是鍵名):
~~~
<div v-for="(value, name) in object">
{{ name }}: {{ value }}
</div>
~~~
第三個參數為索引:
~~~
<div v-for="(value, name, index) in object">
{{ index }}. {{ name }}: {{ value }}
</div>
~~~
### [監聽事件](https://cn.vuejs.org/v2/guide/events.html#監聽事件 "監聽事件")
可以用 `v-on` 指令監聽 DOM 事件,并在觸發時運行一些 JavaScript 代碼。
示例:
~~~
<div id="example-1">
<button v-on:click="counter += 1">Add 1</button>
<p>The button above has been clicked {{ counter }} times.</p>
</div>
~~~
~~~
var example1 = new Vue({
el: '#example-1',
data: {
counter: 0
}
})
~~~
### [事件處理方法](https://cn.vuejs.org/v2/guide/events.html#事件處理方法 "事件處理方法")
然而許多事件處理邏輯會更為復雜,所以直接把 JavaScript 代碼寫在 `v-on` 指令中是不可行的。因此 `v-on` 還可以接收一個需要調用的方法名稱。
示例:
~~~
<div id="example-2">
<!-- `greet` 是在下面定義的方法名 -->
<button v-on:click="greet">Greet</button>
</div>
~~~
~~~
var example2 = new Vue({
el: '#example-2',
data: {
name: 'Vue.js'
},
// 在 `methods` 對象中定義方法
methods: {
greet: function (event) {
// `this` 在方法里指向當前 Vue 實例
alert('Hello ' + this.name + '!')
// `event` 是原生 DOM 事件
if (event) {
alert(event.target.tagName)
}
}
}
})
// 也可以用 JavaScript 直接調用方法
example2.greet() // => 'Hello Vue.js!'
~~~
### v-model [基礎用法](https://cn.vuejs.org/v2/guide/forms.html#基礎用法 "基礎用法")
你可以用 `v-model` 指令在表單 `<input>`、`<textarea>` 及 `<select>` 元素上創建雙向數據綁定。它會根據控件類型自動選取正確的方法來更新元素。盡管有些神奇,但 `v-model` 本質上不過是語法糖。它負責監聽用戶的輸入事件以更新數據,并對一些極端場景進行一些特殊處理。
> `v-model` 會忽略所有表單元素的 `value`、`checked`、`selected` 特性的初始值而總是將 Vue 實例的數據作為數據來源。你應該通過 JavaScript 在組件的 `data` 選項中聲明初始值。
`v-model` 在內部使用不同的屬性為不同的輸入元素并拋出不同的事件:
* text 和 textarea 元素使用 `value` 屬性和 `input` 事件;
* checkbox 和 radio 使用 `checked` 屬性和 `change` 事件;
* select 字段將 `value` 作為 prop 并將 `change` 作為事件。
> 對于需要使用[輸入法](https://zh.wikipedia.org/wiki/%E8%BE%93%E5%85%A5%E6%B3%95) (如中文、日文、韓文等) 的語言,你會發現 `v-model` 不會在輸入法組合文字過程中得到更新。如果你也想處理這個過程,請使用 `input` 事件。
### [文本](https://cn.vuejs.org/v2/guide/forms.html#文本 "文本")
~~~
<input v-model="message" placeholder="edit me">
<p>Message is: {{ message }}</p>
~~~
- 我們在做什么?
- 為什么是內存?
- 我們實際上在做什么
- HTML基礎
- Web原理和HTML簡介
- Web原理
- HTML概念
- HTML標簽
- 標簽
- HTML固定基本結構
- 第一個HTML頁面
- 工具的使用
- 標題
- <hr>和<p>標簽
- 路徑概念
- 超級鏈接
- 列表
- 表格
- 表單的設計與使用
- 表單域的原理
- 文本框和密碼框
- 單選框和復選框
- 下拉列表框
- 多行文本和上傳
- 提交按鈕和重置按鈕
- 為CODING COFFEE加入在線購買頁
- HTML5
- 定位服務
- CSS
- CSS的基礎使用
- CSS簡介
- CSS樣式規則和加載方式
- 選擇器
- 偽類
- CSS優先級和層疊
- CSS顏色
- 背景圖片
- 文本
- CSS列表
- DIV+CSS布局
- 內聯元素和區塊元素介紹
- Display屬性
- 盒子模型的邊距和邊框
- 浮動和清除浮動
- 用Position屬性進行定位
- 專題:居中和對齊
- flex布局
- CSS新特性
- CSS3邊框
- 動畫
- Javascript
- HelloWorld
- 語句與變量
- 一切皆對象
- 標識符、注釋和區塊
- 基本數據類型和引用數據類型
- 語句
- 條件語句
- 循環語句
- 標準庫
- Array對象
- Number對象
- String對象
- JSON對象
- Math對象
- Date對象
- 數據類型
- typeof運算符
- number
- 字符串
- 布爾類型
- 函數
- 數組
- Dom模型
- Dom和Dom節點
- 特征相關屬性
- 節點對象方法
- Element對象
- Attribute對象
- Text節點和CSS操作
- 事件模型
- WebStorage
- BOM模型
- window對象
- 計時事件
- jQuery基礎
- 認識jQuery
- jQuery對象和DOM對象
- jQuery選擇器
- jQuery Dom操作
- 查找節點和創建節點
- 插入節點和刪除節點
- 復制節點和替換節點
- 包裹節點和屬性操作
- 樣式操作
- 設置和獲取HTML、文本和值
- 遍歷節點和CSS操作
- jQuery 事件和動畫
- 事件綁定與冒泡處理
- jQuery動畫
- jQuery 插件
- validate 插件
- jQuery與Ajax的應用
- Ajax簡介
- jquery中的Ajax
- Vue.js基礎與實戰
- HelloWorld
- v-for、v-on、v-model
- 組件化編程
- 生命周期函數(鉤子)
- 計算屬性、偵聽器、方法
- class與style綁定
- 關于組件的一些問題
- 單項數據流和Prop驗證
- 項目環境搭建
- 關于git的一些情況
- JavaWeb教程
- 對象和類的概念
- 對象和類的介紹
- 對象和類的介紹2
- 類的繼承與權限控制
- Object類
- 多態的內容
- 容器
- 流
- Servlet
- Servlet練習
- Session和Cookie
- JSP
- 內置對象
- JSTL和EL
- JDBC
- 文件上傳和下載
- 過濾器
- 數據庫
- 數據庫介紹
- MySQL的安裝
- SQL
- 表基本操作
- 修改數據語句
- 數據檢索操作
- 多表數據操作
- 表結構設計
- 綜合應用
- 作業與練習
- Maven教程
- Maven安裝配置