zoukankan      html  css  js  c++  java
  • vue-学习笔记-基础2

    1、计算属性

    对于较复杂的逻辑可以使用计算属性

    <div id='box'>
    	<p>
    		<label for="name">名字</label>
    		<input type="text" id="name" v-model="name">
    	</p>
    	<p>
    		<label for="age">年龄</label>
    		<input type="text" id="age" v-model="age">
    	</p>
    	<p>{{intro}}</p>
    	
    </div>
    var vm = new Vue({
    	el:"#box",
      	data:{
    		age:'',
    		name:''
    	},
    	computed:{
    		intro:function(){
    			if(this.age && this.name)
    			return '你的名字是'+this.name+',今年是'+this.age+'岁~'
    		}
    	}
    });
    

      计算属性intro,依赖着age和name,当两个中的任何一个值发生改变,都会导致intro中文字变化。

    计算属性 VS 方法

    使用方法也能实现,只是计算属性是基于它的依赖进行缓存的。只有它的相关依赖发生改变时才会重新求值。

    计算属性 VS watch属性

    vue提供一种更通用的方式来观察和响应vue实例上的数据变动 , watch选项,来相应数据的变化。主要用于在数据变化响应时,执行异步操作或开销较大的操作

    2、列表渲染

    如同 v-if模板,也可以用带有v-for的<template>标签来渲染多个元素块

    当v-for和v-if处于同一节点时,v-for的优先级比v-if更高,这意味着v-if将分别重复运行于每个v-for循环中

    vue提供数组方法,所以这些方法也会触发视图更新,改变原数组  push,pop,shift,unshift,splice,sort,reverse

    不改变原数组,会返回新数组filter,concat,slice

     由于js的限制,vue不能检测以下变动的数组

    (1)、当利用索引直接设置一个项时,例如:vm.items[indexOfItem] = newValue

      解决办法:

      a,   Vue.set(example1.items , indexOfItem , newValue)

      b,   example1.items.splice(indexOfItem , 1 , newValue)

    (2)、当修改数组的长度时,例如:vm.items.length = newLength

      解决办法:

      example1.items.splice(newLength)

    3、事件处理器

    用v-on指令监听DOM事件来触发js

    <div id='box'>
    	<button @click="n++">点我{{n}}</button>
    	<ul>
    		<li v-for="item in items" @click="choose(item)">{{item}}</li>
    	</ul>
    	<div class="outer" @click="color($event);">
    		<div class="inner" @click="color($event);"></div>
    	</div>
    </div>
    var vm = new Vue({
    	el:"#box",
      	data:{
    		n:0,
    		items:['apple','pear','orange','tomato']
    	},
    	methods:{
    		choose:function(i){
    			alert('you have choose '+i+' ~');
    		},
    		color:function(e){
    			e.stopPropagation();
    			alert(e.currentTarget.className);
    		}
    	}
    });
    

     如果只是简单的赋值或加减等方法,可以直接写在html中,如果不带参数,直接写绑定方法名即可,带参数就像上面写的一样

    如果是要用到原生DOM的event属性,要么像上面一样传参,但一般简单的写法,并且更符合vue的写法是使用事件修饰符

    .stop       阻止事件冒泡

    .prevent  阻止事件默认行为

    .capture   使用事件捕获模式

    .self         只有当事件在该元素本身(而不是子元素)触发时有回调

    .once       指执行一次

    按键修饰符  

      .enter     .tab     .delete     .esc    .space    .up    .down    .left   .right   .ctrl     .alt     .shift     .meta(不同系统对应不同)

    可以通过全局config.keyCodes对象自定义按键修饰符别名

    例如:  Vue.config.keyCodes.f1 = 112

    当一个viewModel被销毁时,所有的事件处理器都会自动被删除

    4、表单控件绑定

      v-model指令在表单控件元素上创建双向数据绑定,它会根据控件类型自动选取正确的方法更新元素.

      绑定文本框 ,那么值就是文本框中的内容

      绑定有value值的表单,那么值就是value值,其他的就是逻辑值

      想绑定value到Vue实例的一个动态属性上,可以使用v-bind

    修饰符

      .lazy  在默认情况下v-model在input事件中同步输入框的值与数据,也就是说,展示的值和输入的文本值一致。加了这个修饰符就变成,当输完之后失去焦点才会触发更新

      .number 自动将用户输入的值转变为Number类型,如果原值的转换结果是NAN则返回原址,比如:aaa111 返回的还是  aaa111

      .trim  自动过滤用户输入的首尾空格

  • 相关阅读:
    1、MyBatis 快速入门
    1、Spring Framework入门
    1、基本数据类型
    2020软件工程个人作业06
    谭山明月有秋水--事后诸葛亮
    谭山明月有秋水——项冲刺第七天
    谭山明月有秋水——冲刺第六天
    谭山明月有秋水——冲刺第一天
    谭山明月有秋水——冲刺第二天
    谭山明月有秋水——冲刺第三天
  • 原文地址:https://www.cnblogs.com/tiantianxiangshang33/p/6879655.html
Copyright © 2011-2022 走看看