<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>