原始引用:开发时使用开发版本,线上使用生产版本。
原始引用到html中,在浏览器中控制台输入Vue,输出一个函数就可以。
defineProperties实现的数据绑定。
//defineProperties // app.message = "assassin" vue实现了对象直接修改对象下面的任何嵌套的对象或者属性 var app = new Vue({ el: "#root", data: { message: "hello world" } });
v-bind(:)
条件 v-if直接影响DOM节点是否存在
v-show,只是display:none,DOM存在
循环:v-for
<ul> <li v-for="item in items"></li> </ul> var app = new Vue({ el: "#root", data: { items: [1,2,3,4] } });
v-for的键
<ul> <li v-for="(item,index) in items" v-bind:key="'item'+index"></li> //index:索引,key设置的键 </ul>
绑定事件:v-on,对应的写在methods对象中。
<button v-on:click="func"></button> methods: { func: function() { alert(0); } }
<ul> <li v-for="(item,index) in items"><span v-on:click="funcDelete(index)">删除</span></li> //传递循环中的参数 </ul> var app = new Vue({ el: "#root", data: { items: [1,2,3,4] }, methods: { funcDelete: function(index) { this.items.splice(index,1);//删除index的这一项 } } });
数据双向绑定v-model
<input type="text" v-modle="message"/> var app = new Vue({ el: "#root", data: { message: "assassin" } });
组件
Vue.component(),定义全局组件
<div id="root"></div> var app = new Vue({ el: "#root", template: ` <div> //...要用一个大的容器进行包装 </div> `, data: {}, mthods: {} });//大组件
小组件:
Vue.component("list-item",{//item此时定义的名称 template: `<div>{{item_props}}</div>`, props: ["item_props"]//申明从父级拿来的东西 }); //使用 <list-item v-for="item in items" v-bind:item_props="item"></list-item> //绑定子组件的item
详细案例:
<div id="root"> <!-- <input type="text" v-model="message"> <button @click="addClick">submit</button> <ul> <li v-for="item in items">{{item}}</li> </ul> --> </div> <script> var App = new Vue({ el: "#root", template:` <div> <input type="text" v-model="message"> <button @click="addClick">submit</button> <ul> <li v-for="(item,index) in items">{{item}}<span v-on:click="hundleDelete(index)"> Delete</span></li> </ul> </div> `, data: { message: "", items: [] }, methods: { addClick() { this.items.push(this.message); this.message = ""; }, hundleDelete(index) { //alert(index); this.items.splice(index,1); } } }); </script>
子组件与父组件之间的通信
<div id="root"> <!-- <input type="text" v-model="message"> <button @click="addClick">submit</button> <ul> <li v-for="item in items">{{item}}</li> </ul> --> </div> <script> Vue.component("templete",{ template: `<li>{{itemprops}}<span v-on:click="handleDelete(index)">Delete</span></li>`, props: ["itemprops","index"],//从父组件v-bind绑定中(传递到定义函数中的参数)接受父组件的参数 /* data: { props: [] } */ methods: {//组件自身上触发事件 handleDelete: function(index) { this.$emit("delete",index); //$emit(),向外触发事件,父组件监听,在v-bind监听emit所定义的事件,添加父组件的方法 } } }); var App = new Vue({ el: "#root", template:` <div> <input type="text" v-model="message"> <button v-on:click="addClick">submit</button> <ul> <templete v-for="(item,index) in items" v-bind:itemprops="item" v-bind:index="index" v-on:delete="handleDelete"></templete> </ul> </div> `,//v-bind绑定父组件向子组件传参传参, data: { message: "", items: [] }, methods: { addClick() { //alert(this.message); this.items.push(this.message); this.message = ""; }, handleDelete(index) { //console.log(argument); this.items.splice(index,1); } } }); </script>
来源:https://www.cnblogs.com/intelwisd/p/8639367.html