---
tags: Vue 實戰班
---
# Vue 實體,常見的基本方法及屬性
產生 Vue 元件實體以後,將有許多預設的物件屬性及方法可以利用,本段落列出最常見運用的屬性及方法(佔 80%+ 的運用情境),供同學們預習。
- `var app = new Vue();`:將 Vue 的建構函式轉為實體,並且同時傳入元件作為初始化的參數。
- `el`:指定一個元素作為 Vue 實體綁定的位置,選取器方法同`document.querySelector()`,大多情況下都是綁定 `id`。
- `data`:關注點分離的資料位置,所有被預設定義的資料將會產生雙向綁定。資料結構上最外層的 Vue 實體是直接傳入物件,在內層的元件時則是透過函式回傳物件(元件章節會有詳細說明)。
- `methods`:定義元件的函式方法,這些方法可以透過元件 DOM 的 v-on 或元件內的 `this` 直接呼叫。
- `created`:元件的生命週期之一,可在元件建立的同時執行特定方法(如直接呼叫 methods 自訂的方法,或進行 Ajax 行為)。
- `computed`:元件的資料呈現方式,return 的結果會回傳於畫面上,會自動監測資料是否有更動,當有更動後將會執行其內容,並且渲染於畫面之上。
```html
<div id="app">
<input type="text" class="form-control" v-model="filterText">
<ul>
<li v-for="(item, key) in filterData" :key="item.age">
{{ key }} - {{ item.name }} {{ item.age }} 歲
</li>
</ul>
<button class="btn btn-outline-primary" @click="reverseArray">反轉陣列</button>
</div>
```
```js
// 將 Vue 的建構函式轉為實體,並且同時傳入元件作為初始化的參數。
var app = new Vue({
// 指定一個元素作為 Vue 實體綁定的位置
el: '#app',
// 資料位置,所有被預設定義的資料將會產生雙向綁定。
data: {
arrayData: [
{
name: '卡斯伯',
age: 35
},
{
name: 'Ray',
age: 28
},
{
name: '洧杰',
age: 33
}
],
filterText: '',
},
// 定義元件的函式方法
methods: {
reverseArray: function () {
this.arrayData.reverse()
console.log(this.arrayData)
},
},
// 元件的資料呈現方式,return 的結果會回傳於畫面上
computed: {
filterData: function () {
var vm = this;
return vm.arrayData.filter(function (item) {
return item.name.match(vm.filterText);
});
},
},
// 元件的生命週期之一
created: function() {
this.arrayData.push({
name: '神秘人',
age: 42
})
}
});
```
<iframe height="265" style="width: 100%;" scrolling="no" title="Vue 實體常見基本方法" src="https://codepen.io/hsiangfeng/embed/wvKgdEP?height=265&theme-id=dark&default-tab=js,result" frameborder="no" allowtransparency="true" allowfullscreen="true" loading="lazy">
See the Pen <a href='https://codepen.io/hsiangfeng/pen/wvKgdEP'>Vue 實體常見基本方法</a> by Ray
(<a href='https://codepen.io/hsiangfeng'>@hsiangfeng</a>) on <a href='https://codepen.io'>CodePen</a>.
</iframe>