Vue插值,指令,过滤器,监听属性及计算属性

1.插值

在这里插入图片描述
在这里插入图片描述

<!-- 定义边界 -->
<div id="app">
	<h2>文本</h2>
	{{msg}}
	<h2>html文本转义</h2>
	<div v-html="msg"></div>
	<h2>vue的属性</h2>
	<input type="text" value="msg">
	<br>
	<input v-bind:value="msg">
	<br>
	<input :value="msg">
	<h2>vue中的js支持</h2>
	{{str}}
	<br>
	{{str.substr(0,6).toUpperCase()}}
	<br>
	{{ number + 1 }}
	<br>
	{{ ok ? 'YES' : 'NO' }}
	<br>
	<span v-bind:id="'list-' + id">我的Id是js动态生成的</span>
</div>
<script>
	// 绑定边界
	new Vue({
		el: '#app',
		data() {
			return {
				msg: '<span style="color:red">hello vue</span>',
				str: 'hello vue...',
				number: 6,
				ok: false,
				id: 100
			}
		}
	})
</script>

2.指令

  1. v-if/v-else/v-else-if
<h2>v-if/v-else/v-else-if</h2>
<input v-model="score">
<span v-if="score >= 90">优秀</span>
<span v-else-if="score >= 80">良好</span>
<span v-else-if="score >= 70">中等</span>
<span v-else-if="score >= 60">及格</span>
<span v-else="">不及格</span>

在这里插入图片描述
在这里插入图片描述

  1. v-show
<span v-if="score > 100">不存在</span>
<br>
<h2>v-show</h2>
<span v-show="score > 100">不存在</span>

在这里插入图片描述
注:

  • v-if 在不满足条件的时候是不存在的
  • v-show 在不满足条件的时候是存在的, 只是隐藏了
  1. v-for
<h2>v-for</h2>
<span v-for="a in arr">
	{{a}}
	<br>
</span>
<span v-for="a in likes">
	{{a}}
	{{a.id}}
	{{a.name}}
	<br>
</span>
data() {
	return {
		score: 80,
		arr: ['篮球', '足球', '排球'],
		likes: [
			{id: 1, name: '篮球'},
			{id: 2, name: '足球'}
		]
	}
},

在这里插入图片描述

  1. v-bind
    属性
  2. v-on
    绑定事件
<h2>v-on</h2>
<button v-on:click="do_">点我</button>
<button @click="do_">点我</button>
<br>
<input v-model="envname">
<br>
<button v-on:[envname]='do_'>魔法按钮</button>
envname: 'click'

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
魔法按钮获取输入框的值, 根据值来决定事件

  1. v-model
    双向绑定

3.过滤器

<div id="app">
	<h2>基本过滤器</h2>
	{{str}}
	<br>
	{{str|filterA}}
	<h2>过滤器串联</h2>
	{{str|filterA|filterB}}
	<h2>过滤器传参</h2>
	{{str|filterC(2,8)}}
	<h2>引用外部js</h2>
	{{curtime}}
	<br>
	{{curtime|format}}
</div>
<script>
	Vue.filter('format', function(v) {
		return fmtDate(v, 'yyyy-mm-dd hh:MM:ss');
	})
	// 绑定边界
	new Vue({
		el: '#app',
		filters: {
			filterA: function(v) {
				return v.substring(0, 5);
			},
			filterB: function(v) {
				return v.substring(1, 2);
			},
			filterC: function(v, begin, end) {
				return v.substring(begin, end);
			}
		},
		data() {
			return {
				str: 'hello vue',
				curtime: new Date()
			}
		}
	})
</script>

date.js

//给Date类添加了一个新的实例方法format
Date.prototype.format = function (fmt) {
	//debugger;
    var o = {
        "M+": this.getMonth() + 1,                 //月份
        "d+": this.getDate(),                    //日
        "h+": this.getHours(),                   //小时
        "m+": this.getMinutes(),                 //分
        "s+": this.getSeconds(),                 //秒
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度
        "S": this.getMilliseconds()             //毫秒
    };
    if (/(y+)/.test(fmt))
        fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt))
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
};

function fmtDate(date, pattern) {
	var ts = date.getTime();
    var d = new Date(ts).format("yyyy-MM-dd hh:mm:ss");
    if (pattern) {
        d = new Date(ts).format(pattern);
    }
    return d.toLocaleString();
};

在这里插入图片描述

4.监听属性及计算属性

  1. 监听属性
    监听属性 watch,我们可以通过 watch 来响应数据的变化
    监听属性双向绑定
    修改m时, km的值会发生变化
    修改km时, m的值会发生变化
<h2>监听属性</h2>
m: <input v-model="m">
km: <input v-model="km">
watch: {
	m: function(v) {
		// 此时的v指的是被监听的属性
		this.km = parseInt(v) / 1000;
	},
	km: function(v) {
		this.m = parseInt(v) * 1000;
	}
},

在这里插入图片描述

  1. 计算属性
    计算属性可用于快速计算视图(View)中显示的属性。这些计算将被缓存,并且只在需要时更新
    计算属性单向绑定
    修改单价和数量时, 小计会变化
    在这里插入图片描述
<table>
	<tr>
		<td>单价</td>
		<td>数量</td>
		<td>小计</td>
	</tr>
	<tr>
		<td><input v-model="danjia"></td>
		<td><input v-model="count"></td>
		<td>{{xiaoji}}</td>
	</tr>
</table>
computed: {
	xiaoji: function(v) {
		return this.danjia * this.count;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值