3-vue实例
来源:互联网 发布:淘宝一件代发如何发货 编辑:程序博客网 时间:2024/05/21 08:38
数据绑定是将数据和试图相关联,当数据发生变化时,可以自动更新视图
语法
1.Vue构造器
每个 Vue.js 应用都是通过构造函数 Vue 创建一个 Vue 的根实例启动的
var vm = new Vue();
Vue 并不完全遵循 MVVM 模式, Vue 的设计无疑受到了它的启发。因此在文档中经常会使用 vm (ViewModel 的简称) 这个变量名表示 Vue 实例。在实例化 Vue 时,需要传入一个选项对象,它可以包含数据、模板、挂载元素、方法、生命周期钩子等选项。可以扩展 Vue 构造器,从而用预定义选项创建可复用的组件构造器:var MyComponent = Vue.extend({// 扩展选项})// 所有的 `MyComponent` 实例都将以预定义的扩展选项被创建var myComponentInstance = new MyComponent()
尽管可以命令式地创建扩展实例,不过在多数情况下建议将组件构造器注册为一个自定义元素,然后声明式地用在模板中。 **2.属性与方法**var data = { a:1 }var vm = new Vue({ data:data})vm.a === data.a //-->true//设置属性也会影响到原始数据vm.a = 2data.a //-->2//反之亦然data.a = 3vm.a //-->3
**注意:只有这些被代理的属性是响应式的。**如果在实例创建之后添加新的属性到实例上,它不会触发视图更新除了 data 属性,Vue 实例暴露了一些有用的实例属性与方法这些属性与方法都有前缀 $ ,以便于代理的 data 属性区分,例如:var data = { a:1 }var vm = new Vue({ el: '#example', data:data})vm.$data === data //-->truevm.$el === document.getElementById('example')//-->true//$watch 是一个实例方法vm.$watch('a',function(newVal,oldVal){//这个回调将在 'vm.a' 改变后调用}
注意,不要在实例属性或者回调函数中(如:vm.$watch('a',newVal => this.myMethod())使用箭头函数因为箭头函数绑定父级上下文,所以 this 不会像预想的一样是 Vue实例 ,而是 this.myMethod 未被定义)
3. 钩子 hook
hook 是一种事件劫持机制,它会比你的事件更早进行执行处理
可以简单的把它理解为 Vue 的内置事件,但是这个内置事件是由你去配置的
let vm = new Vue({ el: 'app', data: { name: '我是app的名称', prop:'我是app的属性' }, created:function(){ document.getElementsByClassName('content')[0].textContent = '$(this.name),$(this.prop)。'; }})
其中的 created 事件就是一个 hook,执行效果:
我是app的名称,我是app的属性。
所谓“生命周期”,就是在类实例化的过程中,构造函数执行的不同阶段。
钩子”就是在某个阶段给你一个做某些处理的机会。
4.实例生命周期
每个 Vue 实例在创建之前都要经过一系列的初始化过程。
Vue实例有一个完整的生命周期,也就是从开始创建、配置数据观测 (data observer)、初始化数据、编译模板、挂载Dom、渲染→更新→渲染、卸载等一系列过程,我们称这是Vue的生命周期。
通俗说就是Vue实例从创建到销毁的过程,就是生命周期。
,实例也会调用一些生命周期钩子,
在这个过程中,它提供了一系列的事件,可以让我们注册 js 方法,这就给我们提供了执行自定义逻辑的机会,可以让我们达到控制整个过程的目的地,
哇赛,如果你搞过 Asp.Net WebForm 的话,你会发现整个就是 WebForm 的翻版嘛哈哈。
值得注意的是,在这些事件响应方法中的 this 直接指向的是 vue 的实例。
例如:created 这个钩子在实例被创建之后被调用
var vm = new Vue({ data: { a:1 } created:function(){ //this 指向 vm 实例 console.log( 'a is' + this.a ) } //--> a is 1})
也有一些其他的钩子,在实例周期的不用阶段调用,如: monted、updated、destroyed钩子的 this 指向调用它的 Vue 实例。Vue 没有控制器的概念,组件的自定义逻辑可以分布在这些钩子中。首先看看下面官网的一张生命周期的图,我做一下标注,看看整体的流程,后面我们上代码做一下效果。![i]![这里写图片描述](http://img.blog.csdn.net/20170719202127787?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvV2luU29sc3RpY2U=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)Vue提供的可以注册的钩子都在上图片的红色框标注。 他们是:+ beforeCreate 在实例初始化之后,数据观测(data observer) 和 event/watcher 事件配置之前被调用+ created 实例已经创建完成之后被调用。在这一步,实例已完成以下的配置:数据观测(data observer),属性和方法的运算, watch/event 事件回调。然而,挂载阶段还没开始, <div id="app"> <p>{{ number }}</p> <input type="text" name="btnSetNumber" v-model="number"> </div> <script> var app = new Vue({ el: '#app', data: { number: 1 }, beforeCreate: function () { console.log('beforeCreate 钩子执行...'); console.log(this.number) }, cteated: function () { console.log('cteated 钩子执行...'); console.log(this.number) }, beforeMount: function () { console.log('beforeMount 钩子执行...'); console.log(this.number) }, mounted: function () { console.log('mounted 钩子执行...'); console.log(this.number) }, beforeUpdate: function () { console.log('beforeUpdate 钩子执行...'); console.log(this.number) }, updated: function () { console.log('updated 钩子执行...'); console.log(this.number) }, beforeDestroy: function () { console.log('beforeDestroy 钩子执行...'); console.log(this.number) }, destroyed: function () { console.log('destroyed 钩子执行...'); console.log(this.number) }, }); </script>
阅读全文
0 0
- 3-vue实例
- vue实例
- Vue实例
- vue实例
- Vue实例
- vue 实例
- Vue实例
- Vue 实例
- Vue实例
- Vue 实例
- vue ——Vue实例
- Vue基础之Vue实例
- Vue基础(vue实例)
- vue.js入门实例
- vue-router简单实例
- Vue.js 实例
- Vue 测试实例-组件
- vue实例项目
- HDU1166 敌兵布阵(树状数组)
- pdf与cad的转换
- 方法的按值传递
- DTcms(三)
- mybatis-全局配置文件
- 3-vue实例
- POJ 3126 primepath
- python装饰器、类可以用来装饰、元类、type()的使用、python的存储机制:小整数池、intern机制
- 告别龟速:基于Chrome插件的百度云下载链接提取
- Android 异步任务AsyncTask
- 【网络】Select服务器的实现
- 用户名(手机号)和密码的后台校验
- Sybase、DB2数据导入导出
- uGUI Text富文本的顶点数优化