-
创建Vue实例 :new Vue()
new Vue({ el:"#root", data:{ content:"hello word" } });
- el:表示element,通过选择器与页面dom元素绑定
- data:为Vue对象的数据,使用{{content}}插值表达式访问data中的content
- 示例:helloworld.html
-
挂载点、模板、实例之间的关系
- 挂载点:el属性绑定的dom元素成为挂载点,只有挂载点可以操作vue实例的data
- 模板:挂载点下的所有内容都称为模板内容,模板不仅可以写在html标签中,也可以在vue实例中使用template属性创建,当html标签与vue实例中都存在模板时,会使用vue实例中的模板
- Vue实例会将模板以及数据展示在绑定的挂载点中
- 示例:template.html
new Vue({ el:"#root", template: "<h2>hello {{content}}</h2>", data:{ content:"hello word" } });
-
Vue实例中的数据、事件与方法
-
访问data中的数据
- data中的数据支持任意类型
- 使用插值表达式{{key}}访问
- 使用v-text="key"访问,该方式将key对应的数据进行转义之后当做纯文本填充到模板中
- 使用v-html="key"访问,该方式不会将key对应的数据进行转义,直接填充到模板中
- 示例:vue-data.html
-
Vue中的事件
- v-on:event 绑定事件
- v-on:可以简写为@
- 示例:event-methods.html
<!--绑定点击事件,执行handleClick方法--> <div v-on:click="handleClick"> {{content}} </div> <!--或者--> <div @click="handleClick"> {{content}} </div>
-
Vue中的方法
-
定义在Vue实例中的methods属性中
-
示例:event-methods.html
methods: { handleClick: function(){ this.content = "hello Vue" } }
-
-
属性绑定(单项绑定)
-
单项绑定:data发生变化属性值改变,属性值改变data不会发生变化
-
v-bind:attr_name="key",使用v-bind:属性名的方式给该属性赋值,key为vue实例data中的字段
-
简写为":attr_name='key'"
-
示例:v-bind.html
<div v-bind:title="title"> <h1>使用v-bind:title</h1> </div> <div :title="title"> <h1>使用:title</h1> </div>
-
-
双向数据绑定
-
v-model="key":该语法将vue实例中key对应的数据与当前模板的value双向绑定,key变化时value变化,value变化时,key对应的数据也发生改变。
-
示例:v-model.html
<div id="root"> 单向数据绑定:<input type="text" :value="content"> <br> 双向数据绑定:<input type="text" v-model="content"/> <div> <h1>{{content}}</h1> </div> </div> <script> new Vue({ el: "#root", data: { content: "hello vue" } }); </script>
-
-
计算属性
-
使用computed属性声明计算属性,计算属性的值对应函数的返回值
-
示例:computed.html
- computed:声明计算属性
- result:表示计算属性名称
- function返回值为计算属性result的值
computed: { result: function(){ return parseInt(this.firstNumber) + parseInt(this.nextNumber); } }
-
-
侦听器
-
使用watch属性声明侦听器,侦听属性变化,对应处理变化的函数
-
示例:watch.html
- watch:声明侦听器
- fullName:要侦听的属性字段
- function:属性变化对应的处理函数
watch: { fullName: function(){ this.changeCount ++; } }
-
-
v-if
-
用来控制元素是否存在,true则向dom中添加元素,false则从dom中删除该元素
-
v-if每次都会创建新的dom元素或者删除dom元素
-
示例:v-if&v-show.html
<div id="if" v-if="isexist" @click="notExist"> {{content}} </div>
-
-
v-show
-
用来控制元素是否展示,true则显示该元素,false则将display属性置为none
-
v-show只是控制元素的display属性,不会频繁操作dom树,性能更好
-
示例:v-if&v-show.html
<div id="show" v-show="isshow" @click="notShow"> {{content}} </div>
-
-
v-for
-
用来遍历某个集合
-
语法:v-for="item of list",其中list为要遍历的集合,item为每次遍历到的属性值
-
v-for="(item, index) of list",其中index为遍历到的下标
-
最好为每一项绑定key属性,key值需要唯一不重复,提高渲染的性能
-
示例:v-for.html
<ul> <li v-for="(item,index) of list" :key="index">{{item}}</li> </ul>
-
-
练习:todo-list.html
-
vue组件
-
全局组件,在任意Vue挂载点中任何地方都可以使用:Vue.component();
-
示例:vue-component.html
Vue.component('todo-item', { template: "<li>全局组件</li>" });
-
局部组件
- 创建组件对象,需要在vue实例中注册组件才可以使用
- 示例:vue-component.html
//声明一个组件 var v_div = { template : "<div><h1>局部组件</h1></div>" }; new Vue({ el: "#root", //注册该组件 components: { "v-div": v_div } });
-
向组件中传递参数:通过属性传参
-
外层向组件中传递参数值,组件中使用props属性声明要接收的属性名称。
-
示例:vue-component.html
Vue.component('todo-item', { //接收外层传递的content属性值 props: ["content"], template: "<li>全局组件</li>" }); var v_div = { props: ["message"], template : "<div><h1>{{message}}</h1></div>" };
-
-
-
组件与实例的关系
- 每个Vue组件就是一个Vue实例,可以使用Vue实例的全部功能
- 每个实例都有自己的模板,对于根实例,如果不定义末班,则整个挂载点内的全部dom元素都为模板
-
父子组件通信机制:发布订阅模式
-
子组件使用this.$emit('eventname',[params])方法向父组件触发事件,eventname指定触发父组件事件,params为传递的参数
-
父组件监听对应的触发事件:@eventname
-
示例:list-curd.html
// 子组件发布触发事件 Vue.component('curd-list',{ props: ['item','index'], template: "<li>{{item}} <button @click='deleteThis'>删除</button></li>", // 子组件处理组件内部绑定的事件 methods: { deleteThis: function(){ //向父组件触发delete事件,传递的参数为index this.$emit('delete-item', this.index); } } }); //父组件订阅处理事件 <curd-list v-for="(item,index) of list" :key="index" :index="index" :item="item" //监听对应的事件 @delete-item="deleteItem" > </curd-list> // 在父组件的methods属性中处理delete-item事件 deleteItem: function(index){ this.list.splice(index, 1); },
-
-
-
Notifications
You must be signed in to change notification settings - Fork 0
choosezzz/learn-vue
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Latest commit | ||||