带着实例继续学习(5):模拟搜索框动态提示效果之计算属性

第一步,先撸一个子组件

user-favs.vue

    <div class="form-group">
        <label class="col-sm-2 control-label">爱好</label>
        <div class="col-sm-10">
            <input type="text" class="form-control" v-model="inputText">
            <br>
            <table class="table table-bordered" v-if="showTable()">
                <thead>
                    <th>类别1</th>
                    <th>类别2</th>
                </thead>
                <tbody>
                    <tr v-for="f in favs">
                        <td>{{f.class1}}</td>
                        <td>{{f.class2}}</td>
                    </tr>
                </tbody>
            </table>
        </div>
    </div>
</template>

<script>
    export default{
        data(){
            return{
                inputText:"",
                favs:[
                    {"class1":"前端开发","class2":"js"},
                    {"class1":"后端开发","class2":"java"},
                ]
            }
        },

        methods:{
            showTable(){
                if(this.inputText == "") return false;
                return true;
            }
        },
</script>

这里写图片描述
表格v-if="showTable()" 如果inputText有值才显示。

计算属性

我们要实现文本框输入关键字,表格显示对应行的数据

computed:{
   getFavs(){
       return this.favs.filter(function (value) {
           if(value.class2.indexOf(this.inputText) >= 0){
               return true
           }else{
               return false
           }
       }.bind(this))
   }
}

getFavs 方法返回一个新的数组,array.filter(callback) 回调函数内部做了判断,最后返回复合判断条件的新的数据。

<tr v-for="f in getFavs">
    <td>{{f.class1}}</td>
    <td>{{f.class2}}</td>
</tr>

然后表格循环的时候,就调用getFavs 方法.
这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值