<div id="root">
<div>
<input v-model="inputValue" />
<button @click="onAdd">submit</button>
</div> <ul>
<todo-item
v-for="(item, index) of list"
:key="index"
:content="item"
:index="index"
@delete="onDelete"
></todo-item>
</ul> </div> <script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script type="text/javascript"> Vue.component('todo-item', {
props: ['content', 'index'],
template: '<li>{{content}} <a href="javascript:;" @click="onClick">删除</a></li>',
methods: {
onClick: function(){
this.$emit('delete', this.index)
}
},
}); new Vue({
el:"#root",
data:{
inputValue: '',
list: [],
}, methods: {
onAdd: function(){
if(this.inputValue == '') return;
this.list.push(this.inputValue);
this.inputValue = '';
},
onDelete: function(index){
this.list.splice(index, 1);
},
}
}) /*
white-space: pre-line; var app = new Vue({ el: '#id', //属性注入
props: {
}, data: {
message: 'Hello Vue!'
}, //方法
methods: { }, //计算属性
//计算属性与方法的区别在于,它是基于它们的依赖进行缓存的,只在相关依赖发生改变时它们才会重新求值,性能更优。
computed: { fullName: { get: function () {
return this.firstName + ' ' + this.lastName
}, set: function (newValue) {
var names = newValue.split(' ')
this.firstName = names[0]
this.lastName = names[names.length - 1]
}
}
}, //侦听属性 watch: {
firstName: function (val) {
this.fullName = val + ' ' + this.lastName
},
lastName: function (val) {
this.fullName = this.firstName + ' ' + val
}
} }); Vue.component('demo-simple', {}); 绑定
v-bind:title=""
表单输入绑定
v-model="" 遍历
v-for="(item, key, index) of items"
v-for="(item, index) of items"
v-for="item of items" 绑定事件
v-on:click="" v-if=""
v-else-if=""
v-else
<template v-if=""></template> v-show="" vm.$data
vm.$el
$event vm.$watch('a', function(newVal, oldVal){}); 一次性
<span v-once>{{ msg }}</span> 以标准的 html 解析
v-html="html" .prevent 是修饰符,用于阻止浏览器默认行为
v-on:submit.prevent="onSubmit" <div class="static" v-bind:class="{ active: isActive, danger: hasError }"></div> */ </script>