首页 > GAME > 游戏 > 正文

张北遮擅沾工作室,余姚坠厩脊商贸有限公司,金华斯匣代理记账有限公司

script


文章属于速记,有错误欢迎指出。风格什么的不喜勿喷。

先来一个组件,不用vue-model,正常父子通信

<!-- parent -->
<template>
<div class="parent">
    <p>我是父亲, 对儿子说: {{sthGiveChild}}</p>
    <Child @returnBack="turnBack" :give="sthGiveChild"></Child>
</div>
</template>
<script>
import Child from "./Child.vue";
export default {
    data() {
        return {
            sthGiveChild: "给你100块"
        };
    },
    components: {
        Child
    },
    methods: {
        turnBack(val) {
            this.sthGiveChild = val;
        }
    }
}
</script>
<!-- child -->
<template>
<div class="child">
    <p>我是儿子,父亲对我说: {{give}}</p>
    <a href="javascript:;" @click="returnBackFn">回应</a>
</div>
</template>
<script>
export default {
    props: {
        give: String
    },
    methods: {
        returnBackFn() {
            this.$emit("returnBack", "还你200块");
        }
    }
}
</script>

点击回应后,父亲对儿子说的话变成了儿子的回应。儿子收到的信息也变了,实现通信。

改用v-model

<!-- parent -->
<template>
<div class="parent">
    <p>我是父亲, 对儿子说: {{sthGiveChild}}</p>
    <Child v-model="sthGiveChild"></Child>
</div>
</template>
<script>
import Child from "./Child.vue";
export default {
    data() {
        return {
            sthGiveChild: "给你100块"
        };
    },
    components: {
        Child
    }
}
</script>
<!-- child -->
<template>
<div class="child">
    <p>我是儿子,父亲对我说: {{give}}</p>
    <a href="javascript:;" @click="returnBackFn">回应</a>
</div>
</template>
<script>
export default {
    props: {
        give: String
    },
    model: {
        prop: "give",
        event: "returnBack"
    },
    methods: {
        returnBackFn() {
            this.$emit("returnBack", "还你200块");
        }
    }
}
</script>

文案虽有不同,但是效果最终是一致的。

看看官方自定义组件的v-model

官方例子https://vuefe.cn/v2/api/#model

有这么一句话: 默认情况下,一个组件上的 v-model 会把 value 用作 prop 且把 input 用作 event。
尝试把上边子组件的例子改一下,也是跑的通的

<!-- child -->
<template>
<div class="child">
    <p>我是儿子,父亲对我说: {{value}}</p>
    <a href="javascript:;" @click="returnBackFn">回应</a>
</div>
</template>
<script>
export default {
    props: {
        value: String
    },
    methods: {
        returnBackFn() {
            this.$emit("input", "还你200块");
        }
    }
}
</script>

做一下总结:

  • 如果你懒,不想自己去处理事件,那就用默认的 "value" && "input" 事件去处理,如果用原生事件的,甚至连model属性也可以省去。
  • 如果你想自己的代码比较明确,区分出自定义事件,那么下面的组合才是你的菜。
    prop和event看你自己心情定义,当然要知名见意【尽量避开关键字】

    model: {
    prop: "someProp", // 注意,是prop,不带s。我在写这个速记的时候,多写了一个s,调试到怀疑人生
    event: "someEvent"
    }
    this.$emit("someProp", [returnValueToParent])

当前文章:http://mabebox.com/i1c6r/28412.html

发布时间:2018-10-16 11:11:15

时时彩单双大小规律 如何在家投资赚钱 网赚平台发帖 现在最火的挣钱项目 个人如何利用网络赚钱 挂机赚rmb真的假的 有哪些能挣钱的小程序 香港顺达赚钱吗 国外可以赚钱的平台 打工挣钱做饭小游戏

编辑:秉安秉


声明:所发布的内容均来源于互联网,目的在于传递信息,但不代表本站赞同其观点及立场,版权归属原作者,如有侵权请联系删除。
网络免费挂机赚钱软件

用手机挣钱的软件

写东西赚钱