• uniapp自定义组件


    1、先创建一个测试组件:

    创建component目录,新建test.vue文件,定义一个组件:

    这个组件中,我们实现以下功能:

    ①父vue文件中传递属性参数,改变msg的值

    ②父vue文件中调用子组件的函数

    ③子组件中调用父vue文件中的函数

    <template>
        <view class="test">
            {{msg}}
            <button type="default" @click="userFather()">调用父组件方法</button>
        </view>
    </template>
    
    <script>
        export default {
         //父vue页面传递给组件的参数获取方式 props: { can1: { type: String,
    default: function() { return "null" } } },
         //实时监听某个变量变化 watch: { can1: { handler() { console.log(
    this.can1,"5556666"); this.msg = this.can1 }, //监听到数据变化时立即执行 immediate: true }, }, data() { return { msg: "" } }, onLoad() { }, onShow() { }, methods: { userFather() { //第一种调用父组件函数的方法 this.$parent.sghdws('这是子组件参数'); //第二种调用父组件函数的方法 //this.$emit('sghdws', "这是子组件参数") }, open() { console.log("调用子组件方法"); } } } </script> <style> </style>

    2、创建父vue文件

    <template>
        <view>
                    <!--通过can1进行传参,同样可以can2等,通过ref定义子组件的名称,便于从vue文件中调用子组件中的函数-->
            <test1 :can1="suiji" ref="test1"></test1>
            <button type="default" @click="userChild()">调用子组件方法</button>
        </view>
    </template>
    
    <script>
        //引入组件
        import test1 from "@/component/test.vue";
        
        export default {
            //使用组件
            components:{
                test1
            },
            data() {
                return {
                    suiji:''
                }
            },
            onLoad() {
            },
            onShow() {
                var p_this = this;
                //当前时间,使得组件中的msg一直变化为当前时间(实现第一个需求)
                setInterval(function() {
                    let h = new Date().getHours();
                    let i = new Date().getMinutes();
                    let s = new Date().getSeconds();
                    let hh = (h < 10) ? "0" + h : h;
                    let ii = (i < 10) ? "0" + i : i;
                    let ss = (s < 10) ? "0" + s : s;
                    p_this.suiji = hh + ":" + ii + ":" + ss;
                }, 1000);
            },
            methods: {
                            //子组件调用父vue文件中的这个函数(实现第二个需求)
                sghdws(a) {
                    console.log(a);
                },
                            //父vue文件调用这个函数,这个函数调用子组件中的函数(实现第三个需求)
                userChild() {
                    console.log("父组件方法---------");
                    this.$refs.test1.open()
                }
            }
        }
    </script>
    
    <style>
    </style>            

    最终实现效果:

    时间是从父vue文件中获取出来的,通过属性传递给了子组件,子组件中定义了变量监听,实时更新时间,实现了父vue文件参数传递到子组件的需求

    点击“调用父组件方法”,可以调用父vue页面的函数

    点击“调用子组件方法”,可以调用子组件页面函数

  • 相关阅读:
    python_linux系统相关配置
    python_字典dict相关操作
    python_传参
    mapreduce 学习笔记
    linux 常用命令
    C++ stringstream介绍,使用方法与例子
    C++/C++11中std::numeric_limits的使用
    C++中string erase函数的使用
    C++中accumulate的用法
    malloc的用法和意义
  • 原文地址:https://www.cnblogs.com/phpyangbo/p/15926488.html
Copyright © 2020-2023  润新知