vue计算属性

计算属性

依赖data的数据进行处理操作,最终返回新的数据值。

计算属性:

computed:{
	sum(){
		if(this.a>100){
			return 'hello';
		}else{
			return 'hi';
		}
	}

}

使用:直接加载计算属性函数名,data中不能存在同名属性

<p>{{ sum }}</p>

(1)在模板中表达式非常便利,但是它们实际上只用于简单的操作。
(2)模板就是为了描述视图的结构。在模板中放入了太多的逻辑会让模板过重且难以维护。这就是为什么Vue.js将绑定表达式限制为一个表达式。如果需要多于一个表达式的逻辑,应当使用计算属性。

购物车满运费

结构:
样式:table居中,margin:100px auto:

<table class="tab" id="app">
        <tr>
            <td>单价:</td>
            <td><input type="text" v-model="perprice"></td>
            <td>元</td>
        </tr>
        <tr>
            <td>数量:</td>
            <td><input type="text" v-model="count"></td>
            <td>个</td>
        </tr>
        <tr>
            <td>邮费:</td>
            <td> <span>{{ express }}</span> </td>
            <td>元</td>
        </tr>
        <tr>
            <td>总价:</td>
            <td> <span> {{ getSumprice }} </span> </td>
            <td>元</td>
        </tr>
    </table>

引入vue.js

var app = new Vue({
            el: '#app',
            data: {
                perprice: '',
                count: '',
                express: 10,
                sumprice: 10
            },
            computed: {
                getSumprice(){
                    if(this.count>8){
                        this.express=0;
                    }else{
                        this.express=10;
                    }
                    this.sumprice = this.perprice*this.count+this.express;
                    return this.sumprice;
                }
            }
        })

输入框的模糊查询

结构:

<div id="app">
    <input type="text" v-model="search">
    <ul>
        <li v-for="item in getSearch">{{ item }}</li>
    </ul>
</div>

第一种方式:

 <script type="text/javascript">
        var app = new Vue({
            el: '#app',
            data: {
                search: "",
                list: ['没有勇气去想的更远','曾经是心心念念','如果没有你 我将会是在哪里','突然好想你,你会在哪里','想念如果会有声音','我好想你,在起风的夜里'],
                newlist: []

            },
            computed: {

                getSearch(){
                    // 设置新数组newArr
                    let newArr = [];
                    this.list.map((item)=>{
                    	// 如果存在,放到新数组中
                        if(item.indexOf(this.search)!=-1){
                            newArr.push(item);
                        }

                    });
                    // 返回新数组
                    return newArr;
                }
            }
        });
    </script>

第二种方式:

getSearch(){
	// 数组的filter方法,是ES5方法
	// 用于过滤出满足条件的数组元素
	return this.list.filter((value)=>{
		// 字符串的includes方法,是ES6方法
		// 用于判断该字符串this.search在value中是否存在,存在为true,不存在为false
		return value.includes(this.search);
	});
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值