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  自动过滤用户输入的首尾空格

posted @ 2017-05-19 17:45  巅峰之旅  阅读(167)  评论(0编辑  收藏  举报