zoukankan      html  css  js  c++  java
  • 使用Vuejs编写单js组件

    1.引用方式

    我们使用Vue进行普通页面开发却不使用webpack等技术时,定义组件可以只依赖单js文件进行开发

    然后像正常引用js文件那样进行引用

        <script src="../Content/plugins/selectIcon/selectIcon.js"></script>

    2.组件定义

    组件的html内容我们可以使用script模板、字符串、ajax请求获取等方式进行加载,这里为了保持组件引用简单,我们对一段html进行压缩成一行定义为变量。

    var html = '<modal  v-model="isshow" title="选择图标" @on-ok="ok" @on-cancel="cancel"><i-form style="height:300px;overflow-y:scroll"></i-form></modal>';
    // 注册
    Vue.component('icon-component', {
        props: ['isshow'],
        template: html,
        mounted: function () {
            var _this = this;
            _this.$nextTick(function () {
                $(".icons-item").on("click", function () {
                    $(".icons-item").removeClass("icons-itemact");
                    $(this).addClass("icons-itemact");
                    //添加标记
                    $("p[data-v-4ed37512]").removeAttr("data-flag");
                    $("p", $(this)).attr("data-flag", true);
                });
    
                $(".icons-item").on("dblclick", function () {
                    var icon = $("p", $(this)).text().trim();
                    $("#txtSelectIcon").val(icon);
                    _this.$emit('myevent', '0');
                });
            });
        },
        methods: {
            ok: function () {
                var icon = $("p[data-flag]").text().trim();
                $("#txtSelectIcon").val(icon);
                this.$emit('myevent', '0');
            },
            cancel: function () { this.$emit('myevent', '0'); }
        }
    })

    3.父页面使用

        <div id="SelectICONModal">
            <keep-alive>
                <icon-component v-bind:isshow="isShow" @myevent="CloseIcon"></icon-component>
            </keep-alive>
        </div>
    var iconVueObj = new Vue({
        el: "#SelectICONModal",
        data: {
            isShow: false
        },
        methods: {
            CloseIcon() {
                this.isShow = false;
            }
        }
    });

    4.页面传值

    我们页面传值使用两种方式进行传递

    父页面像子页面传值使用props进行传递

    <!--父页面-->
    <
    icon-component v-bind:isshow="isShow" ...
    //组件定义
    Vue.component('icon-component', { props: ['isshow'],...

    子页面像父页面传值使用$emit触发定义的事件

    <!--父页面-->
    <
    icon-component v-bind:isshow="isShow" @myevent="CloseIcon"></icon-component>

    //父页面初始化组件时,定义方法
    methods: { CloseIcon() { this.isShow = false; } }

    //组件触发
    this.$emit('myevent', '0');
     
  • 相关阅读:
    [无聊测试赛] T12 道路
    [无聊测试赛] T9 矩阵覆盖
    [无聊测试赛] T10 所驼门王的宝藏
    [无聊测试赛] T8 佳佳的魔法药水
    [无聊测试赛] T7 豪华游轮
    [无聊测试赛] T6 排行榜
    【模板】三分求函数极值
    树的重心模板
    倍增最近公共祖先(LCA)
    ccf201612题解
  • 原文地址:https://www.cnblogs.com/xcong/p/8150970.html
Copyright © 2011-2022 走看看