【IMWeb训练营作业】Vue组件

【IMWeb训练营作业】Vue组件

效果图

效果图

DOM结构

<div id="app">
    <div style="float: left">
        <search-bar btn-value="查询" :list="movies"></search-bar>
    </div>
    <div style="float: left">
        <search-bar btn-value="搜索" :list="games"></search-bar>
    </div>
</div>

自定义组件

<script>
    Vue.component("search-bar", {
        data: function () {
            return {
                selectShow: false,
                val: ""
            }
        },
        props: ['btnValue', "list"],
        template: '<div class="warp"><div class="search clearFix"><input type="text" @click="selectShow = !selectShow" v-model="val"><input type="button" value="搜索" :value="btnValue"><span></span></div><custom-list v-show="selectShow" :list="list" :val="val"    @receive="changeValueHandle"></custom-list>',
        methods: {
            changeValueHandle: function (value) {
                this.val = value;
            }
        }
    })

    //自定义列表组件
    Vue.component('custom-list', {
        props: ["list", "val"],
        template: '<div><ul class="list"><li v-for="(item,index) of list" @click="selectValueHandle(item,index)">{{item}}</li></ul></div>',
        methods: {
            //子组件向父组件通信,传递数据
            selectValueHandle: function (item, index) {
                this.$emit("receive", item, index);
            }
        }
    });

    new Vue({
        el: "#app",
        data: {
            movies: ['肖申克的救赎', '这个杀手不太冷', '霸王别姬', '阿甘正传 ', '美丽人生 ', '千与千寻', '辛德勒的名单', '泰坦尼克号'],
            games: ["冒险岛", "赤色要塞", "夺宝奇案", "魂斗罗", "超级玛丽", "拳皇", "忍者神龟"]
        }
    });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值