1、过滤器

组件过滤器filters

1、作用:对以后数据添枝加叶
2、语法:申明在组件内应用filters对象,返回一个函数,函数肯定要有返回值
3、调用:template中调用过滤器:数据属性|过滤器名字

var Content = {     template: `         <div>         <input type = number  v-model = "msg"/>         <h2>{{msg|RmbData}}</h2>         </div>     `,     data(){         return{            msg:10         }     },     filters:{         RmbData(value){            return '$'+value         }     } }

全局过滤器filter

语法:Vue.filter(过滤器名字,回调函数)
过滤器传参:
默认第一个参数是管道符前的数值,调用的时候不须要传进去

2、监听器watch

一次只能监听一个属性
根本数据类型-简略监听
简单数据类型-深度监听

3、计算属性computed

能够同时监听多个属性
默认只有getter
对象返回一个函数

setter的实现

和methods比拟

1、计算属性有缓存,methods 没有
2、计算属性间接绑定属性不须要调用,methods要通过事件去调用

4、获取DOM元素

作用:通过 ref 这个属性为子组件赋予一个 ID 援用,能够操作原生dom(倡议少用,因为vue操作的虚构dom )
应用:1、template中标签通过 ref="XXX"绑定属性
2、js中通过:this.$refs.XXX调用
返回后果的两种状况:
1、如果在组件外部标签绑定ref属性,应用$refs.xxx获取到的是原生jsdom对象
2、如果是组件绑定ref属性,那么this.$refs.xxx获取的是组件对象

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>获取DOM</title></head><body> <script src="../node_modules/vue/dist/vue.js"></script> <div id="app"> <App/>  </div> <script> // $refs操作的是原生DOM,倡议少用,因为Vue中大部分操作虚构DOM 这样性能更高 var Test = { data() { return { msg:"获取DOM" } }, template:`<div class= "main" id = "d1" > <input  v-model = "msg"/> <h2> {{msg}}</h2> </div>` } var App = { data() { return { msg:"获取DOM", isShow:true } }, template: ` <div> <Test v-if="isShow" ref = "test"></Test> <button  ref = "btn" >扭转生死</button> </div> `,  components:{ Test }, // created(){ //     console.log( this.$refs.btn); // }, // beforeMount(){ //     console.log( this.$refs.btn); // }, mounted(){ // 获取template里标签的dom元素,获取到的时原生jsDOM  console.log( this.$refs.btn); // 获取template里组件的dom元素,获取到的是组件对象 console.log( this.$refs.test); } } new Vue({ el:"#app", components:{ App } }) </script></body></html>

5、$nextTick办法

作用:$nextTick办法是在更新循环完结后执行提早回调,在批改数据之后应用$nextTick办法能够在回调中获取更新后的DOM
动静操作DOm的时候会用到该办法
例子:

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>获取DOM</title></head><body> <script src="../node_modules/vue/dist/vue.js"></script> <div id="app"> <App /> </div> <script> // 需要,动态显示input标签,给标签增加光标事件fouce var App = { data() { return { msg: "获取DOM", isShow: false } }, template: ` <div> <input type =number ref = "input" v-if="isShow"/>  <button  ref = "btn" >扭转生死</button> </div> `, mounted() { // 动静操作DOM元素的显示暗藏 this.isShow = true; // dom更新循环完结后获取到更新后的DOM  this.$nextTick(() => { this.$refs.input.focus(); }) // 存在获取不到到dom,因为这是同步 console.log(this.$refs.input); } } new Vue({ el: "#app", components: { App } }) </script></body></html>