Vue初探

  • Vue初探已关闭评论
  • 216 次浏览
  • A+
所属分类:Web前端
摘要

数据驱动视图:
如上图所示ViewModel充当着监控者的角色,监控到了mode数据发生变化,便会通知view试图进行更新,这个过程并不需要参与其中


MVVM模型

  • M:模型(Model) :对应 data 中的数据
  • V:视图(View) :模板(理解为html页面)
  • VM:视图模型(ViewModel) : Vue 实例对象

数据驱动视图:
Vue初探

如上图所示ViewModel充当着监控者的角色,监控到了mode数据发生变化,便会通知view试图进行更新,这个过程并不需要参与其中

插值语法

{{ }}可以插入表达式

不能放if,不会产生值,可以放三元表达式

vm实例中data里的属性都可以通过Vue实例vm调用

事件处理

鼠标事件

v-on: 可替换为@ <a @click.prevent="show" href='url'/>  // 默认给show传event参数:代表这次触发的事件 

事件修饰符:

  • .stop 阻止事件冒泡,从此元素开始不往上冒了
  • .once 事件只触发一次
  • .prevent 阻止默认事件

键盘事件

<input type='text' @keydown="show($event,666)"/>   // 传俩参    ......  // 自定义的函数必须写在vue配置中的methods配置中,交给vue管理 show($event,x) {  // 要传别的参数时,必须加个$event形参作为占位符 	console.log($event.key);  // 键名 	console.log($event.keyCode);// 键码 	console.log($event.target)  // 触发事件的元素 } 

事件修饰符:

@keyup.enter .delete       // 具体到特定的键才会触发事件 .esc.tab	  // 可链式调用 .space .up  .down  .left  .right 

数据绑定

单向绑定

v-bind:可缩写为 : <a :href='baidu.com'> 

双向绑定

v-model:value 缩写 v-model <input id='root' type='text' v-model='name'> <script> new Vue({ 	el:'#root', 	data:{ 		name:'lisi'    // 改变输入框里的值,这里的name也会变 	} }) </script> 

修饰符:

对于输入元素,默认的行为方式是一旦有数据变化,马上进行绑定。

v-model.lazy  // 相当于监听change操作,只有在失去焦点的时候,才会进行数据绑定 .nuber        // v-model默认是string类型,确保获取到的是数字类型 .trim        // 去掉数据前后的空白再同步 

计算属性

对于任何复杂逻辑,都应当使用计算属性

methods和computed区别:

  • computed 是基于它的依赖缓存,只有相关依赖发生改变时才会重新取值。

  • 而使用 methods ,在重新渲染的时候,函数总会重新调用执行。

<div id="root">   <p> message: "{{ message }}"</p>   <p>Computed message: "{{ msg }}"</p>   // 切片 </div>					// msg为回调函数return的值 
new Vue({     el:'#root',     data:{         message:'hello'     },     computed:{         msg:function() {	// 可简写msg(){...}(不考虑set)             return this.message.slice(0,3)         }       // this指向vm实例     } }) 

监视属性

初始化Vue时设置监听

new Vue({     data:{         num:{                  a:0,   // num中的a或b发生变化时,watch默认监视不到             b:0,         }     },     watch:{         num:{               immediate:true,  // 初始化时调用一下handler             deep:true,       // 深度监视:watch监视num内部值的改变             handler:function(new,old) {   // 发生变化时执行的回调函数                 console.log(监视执行,new,old)             }				// 参数为变化前后的值(必须监视到具体变化的对象)         }     }, }) 

简写:只需要调用handler,不能设置监视配置

watch:{     num(new,old) {       // 函数名为监视对象,函数体为回调执行体     	console.log(监视执行)     } } 

api设置监听

vm.$watch(监视对象,监视配置) 
vm.$watch('num',{            deep:true,     handler:function(){...} }) 

简写:简写:只需要调用handler,不能设置监视配置

vm.$watch('num',function() {  // 不能写成箭头函数      // 回调方法体 })