javascript - 如何在VUE中正确使用父组件中的子组件方法?

标签 javascript vue.js vuejs2 vue-component

我有 ImageUpload.vue 组件,它是简单的 Bootstrap 模式,具有很少的方法。

我想知道使用这些方法之一的最佳方式是什么?像这样的事情:

const app = new Vue({
    components: {
        'component-image-upload': require('./components/ImageUpload.vue'),
    },
    el: '#app',
    data() {
        return {
            images: [],
            pagination: {
                previous: null,
                next: null
            }
        }
    },
    methods: {
        createImage: function(page) {
            this['component-image-upload'].load(image)
        }
    }
});

这个想法只是重用该模型来编辑现有图像数据。

最佳答案

当您发现自己从另一个(子)组件调用方法时,您应该重新考虑您的架构。 Vue 组件是可重用的部件,可用于组装 View ,它们并不意味着在您的应用程序中共享 javascript 逻辑。如果你想这样做,最好编写一个模块并将其函数导入到父 Vue 文件中。与子组件正确“通信”的方式是通过 Prop 绑定(bind),它包含数据并且可以重新触发子组件的渲染循环。从子级到父级的通信是通过分派(dispatch)事件来完成的。你永远不想在两者之间共享逻辑。

无论如何,您都可以这样做:

您的子组件的元素必须位于父组件的模板中,否则它不会被挂载并且无法访问其方法:

<component-image-upload ref="image" />

然后您可以使用其引用来调用该组件上的任何方法:

createImage (page) {
  this.$refs.image.myMethod('this is how you call it from parent')
}

关于javascript - 如何在VUE中正确使用父组件中的子组件方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48583505/

相关文章:

javascript - 如何将现有的 <IMG> 元素 (HTMLImageElement) 附加到 Facebook React.js 组件?

javascript - 当鼠标移到绝对定位的侄子文本上时,悬停效果在图像上丢失

javascript - VueJS更改特定行的字体而不是所有行

javascript - 无法使用 javascript 代码将 css 类设置为 HTML 元素

javascript - Vue : How to use prop value inside component template

vue.js - PrimeVue : DataTable with server side pagination

vue.js - 更改 vuetify 数据表中的日期格式

vue.js - VueX 等待突变执行

javascript - 防止 Atom Beautify 自动格式化 es6 导入/对象解构 (React)

javascript - 如何将一个数组中的连续值插入到另一个映射数组中?