Created
March 23, 2018 02:01
-
-
Save KMR-zoar/17a558ee27944b525967379f86866ca4 to your computer and use it in GitHub Desktop.
Vue.js 入門
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html lang="ja"> | |
<head> | |
<!-- | |
Vue.js 入門: http://www.tohoho-web.com/ex/vuejs.html | |
--> | |
<meta charset="UTF-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
<meta http-equiv="X-UA-Compatible" content="ie=edge"> | |
<title>Vue Test</title> | |
<script src="https://cdn.jsdelivr.net/npm/vue"></script> | |
<style> | |
#app-2 .error { | |
color: red; | |
} | |
[v-cloak] { | |
display: none; | |
} | |
</style> | |
</head> | |
<body> | |
<div id="app-1">{{ message }}</div> | |
<script> | |
var app1 = new Vue({ | |
el: "#app-1", | |
data: { message: 'Hello World!'} | |
}) | |
</script> | |
<div id="app-2"> | |
<input type="text" v-model="message"> | |
<div class="error" v-if="error.require">必須項目です。</div> | |
<div class="error" v-if="error.tooLong">長すぎます。</div> | |
</div> | |
<script> | |
var app2 = new Vue({ | |
el: '#app-2', | |
watch: { | |
message: function(newVal, oldVal) { | |
this.error.require = (newVal.length < 1) ? true : false; | |
this.error.tooLong = (newVal.length > 5) ? true : false; | |
} | |
}, | |
data: { | |
message: 'Hello', | |
error: { | |
require: false, | |
tooLong: false | |
} | |
} | |
}) | |
</script> | |
<div id="app-101"> | |
<div v-text="message"></div> | |
<div>{{ message }}</div> | |
</div> | |
<script> | |
var app101 = new Vue({ | |
el: '#app-101', | |
data: { | |
message: 'Hello!' | |
} | |
}) | |
</script> | |
<div id="app-102"> | |
<div v-text="message"></div> | |
<div v-html="message"></div> | |
</div> | |
<script> | |
var app102 = new Vue({ | |
el: '#app-102', | |
data: { | |
message: '<b>Hello!</b>' | |
} | |
}) | |
</script> | |
<div id="app-103"> | |
<input type="checkbox" @click="change" checked> | |
<span v-show="seen">Hello!</span> | |
</div> | |
<script> | |
var app103 = new Vue({ | |
el: '#app-103', | |
data: { seen: true }, | |
methods: { | |
change: function(e) { | |
this.seen = e.target.checked | |
} | |
} | |
}) | |
</script> | |
<div id="app-104"> | |
<input type="checkbox" @click="change" checked> | |
<span v-if="seen">Hello!</span> | |
</div> | |
<script> | |
var app104 = new Vue({ | |
el: '#app-104', | |
data: { seen: true }, | |
methods: { | |
change: function(e) { | |
this.seen = e.target.checked | |
} | |
} | |
}) | |
</script> | |
<div id="app-105"> | |
<input type="checkbox" @click="change" checked> | |
<span v-if="seen">Hello!</span> | |
<span v-else>Bye!</span> | |
</div> | |
<script> | |
var app105 = new Vue({ | |
el: '#app-105', | |
data: { seen: true }, | |
methods: { | |
change: function(e) { | |
this.seen = e.target.checked | |
} | |
} | |
}) | |
</script> | |
<div id="app-106"> | |
<input type="radio" name="app106-type" onclick="app106.type='A'" checked> | |
<input type="radio" name="app106-type" onclick="app106.type='B'"> | |
<input type="radio" name="app106-type" onclick="app106.type='C'"> | |
<span v-if="type=='A'">Good morning.</span> | |
<span v-else-if="type=='B'">Hello!</span> | |
<span v-else>Bye!</span> | |
</div> | |
<script> | |
var app106 = new Vue({ | |
el: '#app-106', | |
data: { type: 'A'} | |
}) | |
</script> | |
<div id="app-107"> | |
<ul> | |
<li v-for="color in colorList">{{ color }}</li> | |
</ul> | |
</div> | |
<script> | |
var app107 = new Vue({ | |
el: '#app-107', | |
data: { colorList: [ 'Red', 'Green', 'Blue' ]} | |
}) | |
</script> | |
<div id="app-108"> | |
<button v-on:click.once="hello">Hello</button> | |
<button @click="hello">Hello</button> | |
</div> | |
<script> | |
var app108 = new Vue({ | |
el: '#app-108', | |
methods: { | |
hello: function(){ | |
alert("Hello!"); | |
} | |
} | |
}) | |
</script> | |
<div id="appo"> | |
<span v-bind:title="message"> | |
マウスカーソルが合いました | |
</span> | |
</div> | |
<script> | |
var appo = new Vue({ | |
el: '#appo', | |
data: { | |
message: 'Hello Vue!' | |
} | |
}) | |
</script> | |
<div id="app-109"> | |
<input type="button" v-bind:value="message"> | |
<input type="button" :value="message"> | |
</div> | |
<script> | |
var app109 = new Vue({ | |
el: '#app-109', | |
data: { message: 'Hello!'} | |
}) | |
</script> | |
<duv id="app-120"> | |
<input type="text" v-model="message"> | |
<div>Message: {{ message }}</div> | |
</duv> | |
<script> | |
var app120 = new Vue({ | |
el: '#app-120', | |
data: { message: 'Hello!' } | |
}) | |
</script> | |
<div id="app-122"> | |
<button onclick="location.reload();">{{ caption }}</button> | |
<div>Message: <span v-cloak>{{ message }}</span></div> | |
<div>Message: <span>{{ message }}</span></div> | |
</div> | |
<script> | |
window.setTimeout(function() { | |
var app122 = new Vue({ | |
el: '#app-122', | |
data: { | |
message: 'Hello!', | |
caption: '再表示' | |
} | |
}) | |
}, 1000); | |
</script> | |
<div id="app-140"> | |
<my-element-140></my-element-140> | |
</div> | |
<script> | |
Vue.component('my-element-140', { | |
template: '<strong>Hello!</strong>' | |
}); | |
var app140 = new Vue({ | |
el: '#app-140', | |
}) | |
</script> | |
<div id="app-141"> | |
<my-component-141></my-component-141> | |
</div> | |
<script> | |
var MyComponent141 = Vue.extend({ | |
template: '<string>Hello!</string>' | |
}) | |
Vue.component('my-component-141', MyComponent141) | |
var app141 = new Vue({ | |
el: '#app-141' | |
}) | |
</script> | |
<div id="app-142"> | |
<div>{{ message }}</div> | |
</div> | |
<script> | |
var app142 = new Vue({ | |
el: '#app-142', | |
data: { | |
message: 'Hello!' | |
} | |
}) | |
app142.message = 'Bye!'; | |
console.log(app142.$el.textContent); | |
Vue.nextTick(function(){ | |
console.log(app142.$el.textContent); | |
}) | |
</script> | |
<div id="app-143"> | |
<input type="button" @click="addBlue" value="Add"> | |
<input type="button" @click="deleteBlue" value="Delete"> | |
<input type="button" @click="changeRed" value="Change"> | |
<ul> | |
<li v-for="(value, key) in colorList">{{ key }} = {{ value }}</li> | |
</ul> | |
</div> | |
<script> | |
var app143 = new Vue({ | |
el: '#app-143', | |
data: { | |
colorList: { | |
red: '#f00', | |
green: '#0f0' | |
} | |
}, | |
methods: { | |
addBlue: function() { | |
Vue.set(this.colorList, 'blue', '#00f') | |
}, | |
deleteBlue: function() { | |
Vue.delete(this.colorList, 'blue') | |
}, | |
changeRed: function() { | |
app143.colorList.red = '#ff0000' | |
} | |
} | |
}) | |
</script> | |
<div id="app-144"> | |
<div v-font16>Hello!</div> | |
</div> | |
<script> | |
Vue.directive('font16', { | |
inserted: function(el) { | |
el.style.fontSize = '16pt' | |
} | |
}) | |
var app144 = new Vue({ | |
el: '#app-144' | |
}) | |
</script> | |
<div id="app-145"> | |
<div>{{ message | toupper }}</div> | |
</div> | |
<script> | |
Vue.filter('toupper', function(value) { | |
return value.toUpperCase() | |
}) | |
var app145 = new Vue({ | |
el: '#app-145', | |
data: { message: 'Hello!'} | |
}) | |
</script> | |
<script> | |
var res = Vue.compile('<div>{{ message }}</div>'); | |
new Vue({ | |
data: { message: 'Hello!' }, | |
render: res.render, | |
staticRenderFns: res.staticRenderFns | |
}) | |
</script> | |
<div id="app-202"> | |
<my-element-202 values="Hello!"></my-element-202> | |
</div> | |
<script> | |
Vue.component('my-element-202', { | |
props: [ 'values' ], | |
template: '<div>{{ values }}</div>' | |
}) | |
var app102 = new Vue({ | |
el: '#app-202' | |
}) | |
</script> | |
<div id="app-203"> | |
<div id="el-203"></div> | |
</div> | |
<script> | |
var MyElement203 = Vue.extend({ | |
props: [ 'message' ], | |
template: '<div>{{ message }}</div>' | |
}) | |
var vm = new MyElement203({ | |
propsData: { message: 'Hello!'} | |
}).$mount('#el-203'); | |
var app203 = new Vue({ | |
el: '#app-203' | |
}) | |
</script> | |
<div id="app-204"> | |
<div><input v-model="message"></div> | |
<div>Message: {{ upperMessage }}</div> | |
</div> | |
<script> | |
var app204 = new Vue({ | |
el: '#app-204', | |
data: { | |
message: 'Hello!' | |
}, | |
computed: { | |
upperMessage: function() { | |
return this.message.toUpperCase(); | |
} | |
} | |
}) | |
</script> | |
<div id="app-205"> | |
<button @click="toUpper">Upper</button> | |
<button @click="toLower">Lower</button> | |
<div>{{ message }}</div> | |
</div> | |
<script> | |
var app205 = new Vue({ | |
el: '#app-205', | |
data: { | |
message: 'Hello' | |
}, | |
methods: { | |
toUpper: function() { | |
this.message = this.message.toUpperCase(); | |
}, | |
toLower: function() { | |
this.message = this.message.toLowerCase(); | |
} | |
} | |
}) | |
</script> | |
<div id="app-206"> | |
<form> | |
<input type="text" name="text1" :value="message"> | |
<input type="button" @click="change" value="Change"> | |
</form> | |
<div>変更前: {{ oldmsg }}</div> | |
<div>変更後: {{ newmsg }}</div> | |
</div> | |
<script> | |
var app206 = new Vue({ | |
el: '#app-206', | |
data: { | |
message: 'new', | |
newmsg: 'new', | |
oldmsg: 'old' | |
}, | |
watch: { | |
message: function (newVal, oldVal) { | |
this.newmsg = newVal; | |
this.oldmsg = oldVal; | |
} | |
}, | |
methods: { | |
change: function (e) { | |
this.message = e.target.form.text1.value; | |
} | |
} | |
}) | |
</script> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment