2 Vue.js进阶
生命周期_钩子函数(重点)
生命周期函数:在某一时刻, 自动执行的函数。到什么时候做什么事,自动!!
生命:拟人化
// 与el data 平级
created() {
console.log("this.$data: ", this.$data, "this.$el: ", this.$el);
},
beforeCreate, created,beforeMount, mounted
beforeCreate: 在实例生成之前会自动执行的函数
created: 在实例生成之后会自动执行的函数
beforeMount: 在组件内容被渲染到页面之前自动执行的函数
mounted: 在组件内容被渲染到页面之后自动执行的函数
此四个函数在页面加载结束后,会以此执行。
beforeUpdate,updated
beforeUpdate: 当数据发生变化时会立即自动执行的函数
updated: 当数据发生变化,页面重新渲染后,会自动执行的函数
在控制台使用
vm.$data可以修改数据
beforeDestroy destroyed
beforeDestroy 组件销毁前要执行的方法
destroyed 销毁之后要执行的方法
keep-live
自定义属性
我们可以定义一个属性, 它既不在 data 里面, 也不再 methods 里面, 它和 data, methods 等等属性是同级的, 通过
this.$options来访问<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <div id="app"> {{ $options.msg }} </div> <script src="js/v2.6.10/vue.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> let app = new Vue({ el: '#app', data() { return { msg: '定义在msg' } }, msg:"定义在外部", // 自定义属性 methods: { showMsg() { console.log(this.$options.msg); } }, }) </script> </body> </html>
自定义指令
假设我们有如下代码, 一个 input 框, 加载页面后自动聚焦, 我们可以这么写
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script src="js/vue.js" type="text/javascript" charset="utf-8"></script> </head> <body> <!-- 自定义指令 v-on v-model v-bind --> <div id="app"> <button type="button" @click="fun"></button> <input type="text" v-model="input" v-focus v-height /> </div>
<script type="text/javascript"> let app = new Vue({ el: '#app', data() { return { msg: value } }, directives: { focus: { inserted(el) { el.focus(); //实现被绑定该指令的文本框自动获得焦点 } }, // 修改style height: { inserted(el) { el.style.height = '200px' } } }
}) </script>