vue教程【四】-vue指令及事件二

Vue教程 admin 暂无评论


vue指令 vue事件

vm =>viewmodel 数据最终会被vm代理

引入vue后会白给你一个Vue构造函数let vm=new Vue({ //vm==viewModelel:'#app',//告诉vue能管理哪个部分,querySelectordata:{//data中的数据会被vm所代理msg:'zfpx',//可以通过vm.msg取到对应的内容}});

{{}} 取值表达式

  • 通过{{}}来取值,默认可以不写this,里面可以写表达式,赋值运算,计算,三元表达式

  • 注意:在{{}} 尽量少写逻辑运算(computed)

  • 去改变数组中的某一项,是监控不到的,也不能使用改变数组长度的方法

  • 变异方法有 : reserve sort push pop unshift shift splice filter map  只有这些方法{{}}可以监控到

let vm = new Vue({el:'#app',data:{arr:[1,2,3,4,5]}});vm.arr[1]=100;//错误写法

指令

  • dom元素的行间属性,vue提供了内置的指令,必须v-开头,后面的值均为变量

    • (如果checkbox,selected多选是数组,提供value属性)(radio checkbox分组靠v-model)

    • v-model :(表单元素)忽略掉checked ,value,selected,将数据绑定到视图上,视图修改后会影响数据的变化

//checkbox,radio和selected用v-model时需要注意的问题
    1.checkbox:如果是复选框 只有一个复选框时,会把此值转化为布尔类型,,如果true代表选中{{a}}  
    2.radio checkbox分组靠v-model,value值对应就是选择后的结果
    3.     dfddffd 好的好
    let vm = new Vue({
    el:'#app',
    data:{
    a:[] 
    }
})
  • v-html 把html字符当做html渲染 一定是可以信任的html

  • v-once 绑定一次,数据再变化不会导致视图刷新,写在不想刷新的标签上

  • v-for 循环(数组,对象,字符串,数字)  会复用原有的结构 更高效

    • 要循环谁就在谁身上增加v-for属性 最常用来循环数组

数据劫持

vue 会循环data中的数据(数据劫持) :通过Object.defineProperty()来劫持对象属性的setter和getter操作,在数据变动时做你想要做的事情

Object.keys(data).forEach(function(key){
    Object.defineProperty(data,key,{
    enumerable:true,
    configurable:true,
    get:function(){
    console.log('get');
    },
    set:function(){
    console.log('监听到数据发生了变化');
    }
    })
});
console.log(data.name); //控制台会打印出 “get”
console.log(data.name = 'hxx'); //控制台会打印出 "监听到数据发生了变化"

双向绑定的原理

let obj={};
let temp={};
Object.defineProperty(obj,'name',{
    get(){   // 取obj的name属性会触发
    return temp['name']
    },
    set(val){   //给obj赋值会触发set
    temp["name"]=val;//改变temp的结果
    input.value=val; //将值赋予输入框
    }
});
input.value=obj.name;  //页面一加载时,会调用get方法
input.addEventListener("input",function () {  //等待输入框的变化
obj.name=this.value;   //当值变化时会调用set方法
});
  • 给dom元素绑定,函数必须定义在methods中,不能和data里的内容重名,会报错

  • this指向实例

  • 不能使用箭头函数

  • 如果不写括号,事件对象会默认传入,否则只能手动传入$event

点我啊
  • 事件修饰符

    • @事件.capture
      xxx.addEventListener('click',fn,true)

    • @事件.prevent
      preventDefault,returnValue=false

    • @事件.once
      on('click') off('click')

    • @事件.self
      e.srcElement&&e.target 判断事件源绑定事件

    • @事件.stop
      stopPropagation,cancelBubble=true; 

转载请注明: Vue教程中文网 - 打造国内领先的vue学习网站-vue视频,vue教程,vue学习,vue培训 » vue教程【四】-vue指令及事件二

喜欢 ()or分享