Vue.js
基本
セットアップ
<div id="app" />
var app = new Vue({
el: '#app',
});
Interpolation (展開)
<span>{{message}}</span>
// index.js
var app = new Vue({
data: {
message: 'hello!',
},
});
bind
属性にデータをバインドする。バインドしないと、ただのテキストとして評価される。
<a v-bind:href="someUrl" /> <a :href="someUrl" />
new Vue({
data: {
someUrl: 'http://someghing.com/',
},
});
if
<span v-if="rock">you rock!</span>
new Vue({
data: {
rock: true,
},
});
for
<li v-for="todo in todos">{{ todo.text }}</li>
new Vue({
data: {
todos: [
{ text: 'Learn JavaScript' },
{ text: 'Learn Vue' },
{ text: 'Build something' },
],
},
});
on
イベントリスナを設定する。
{{message}}
<button v-on:click="onButtonClick" />
<button @click="onButtonClick" />
new Vue({
data: {
message: 'Hello',
},
methods: {
onButtonClick() {
this.message = 'Hello Again!';
},
},
});
model
two-way binding を設定する。
<input v-model="name" />
new Vue({
data: {
name: 'john',
},
});
components
<todo-item v-for="item in groceryList" v-bind:todo="item" />
Vue.component('todo-item', {
props: ['todo'],
template: '<li>{{ todo.text }}</li>',
});
new Vue({
data: {
groceryList: [
{ id: 0, text: 'Vegetables' },
{ id: 1, text: 'Cheese' },
{ id: 2, text: 'Whatever' },
],
},
});
Vue Instance
インスタンスの作成
const vm = new Vue(options); // root Vue instance
Vue.component('some-component', options); // other Vue instances
data
- data プロパティに渡したオブジェクトは、Vue の Reactivity System に組み込まれる。
- インスタンスからの変更、元データの変更は、双方向に反映される。
- data の変更は自動的に View に 反映される。
- data に後からプロパティを追加することはできない。
var data = { a: 1 };
var vm = new Vue({
data: data,
});
vm.a === data.a; // => true
vm.a = 2;
data.a; // => 2
data.a = 3;
vm.a; // => 3