当前位置: 首页 > 知识库问答 >
问题:

如何从子组件vuejs运行方法

伍玮
2023-03-14

我有父母和孩子的组件...我需要运行子方法,当我点击按钮在父。示例代码:

父母亲

<template>
 <child-component></child-component>
 <button>Open Modal in child Component (set modal = true in child component)</button>
</template>

孩子:

<template>
<div v-if="modal">
 <button @click="modal = false">Close</button>
</div>
</template>
<script>
export default {
  data() {
    return {
     modal: false
    }
  } 
}
</script>

共有2个答案

封飞
2023-03-14

在vue中,你可以传递一个函数作为道具。因此,您可以在父组件中向备用模型添加一个函数,然后将其传递给您的子组件,以便可以正常使用。下面我举一个简单的例子。

通过小编辑,您可以使用绑定到模态状态的状态绑定一个类,如隐藏/显示类

// Html
<div id="app">
     <child v-bind:on-click="toggleModal" v-bind:status="modal" />
</div>


// Parent Component
var sample = new Vue({
     el: '#app',
     data: {
        modal: false
     },
     methods: {
        toggleModal() {
           this.modal = !this.modal
        }
     }
});

// Child component with function prop
Vue.component('child', {
     props: {
        onClick: Function,
        status: Boolean
     }
     template: '<button v-on:click="onClick()">Press Me</div>'
});
邵畅
2023-03-14

您可以通过不同的实现来实现这一点。最常见的方法是通过emit(如果您使用的是Redux模式,另一种方法是通过分派操作)

首先,您希望捕获父组件上的偶数并发出事件。所以这应该是你的模板。

<template>
 <child-component></child-component>
 <button @click="click">Open Modal in child Component (set modal = true in child component)</button>
</template>

然后,您必须在单击时调用的函数上发出一个事件(来自父组件)。类似的东西:

click: function() {
  this.$emit('update');
}

最后,您的子组件需要“听到”那个事件。您可以通过在子组件的创建的函数上这样做来实现:

this.$parent.$on('update', this.updateModal);

this.updateModel是子组件上的一个函数,它只翻转布尔值。

 类似资料:
  • 问题内容: 我开始玩vuejs(2.0)。我构建了一个包含一个组件的简单页面。该页面具有一个带有数据的Vue实例。在该页面上,我注册了该组件并将其添加到html中。该组件有一个。我希望该值反映在父对象(主Vue实例)上。 如何正确更新组件的父数据?从父级传递绑定的道具不好,并且会向控制台发出一些警告。他们的文档中有内容,但是没有用。 问题答案: Vue 2.0中不赞成使用双向绑定,而是使用事件驱动

  • 我在用vue-cli支架做网页包 我的Vue组件结构/传家宝目前看起来如下: 应用程序 在应用程序级别,我需要一个vuejs组件方法,该方法可以将子组件的所有数据聚合到一个JSON对象中,然后发送到服务器。 有没有办法访问子组件的数据?具体来说,多层深? 如果没有,传递oberservable数据/参数的最佳实践是什么,这样当子组件修改它时,我就可以访问新的值?我试图避免组件之间的硬依赖关系,所以

  • 如何从父组件中访问子组件数据?我有一个父组件“MissionPlanner ”,我想访问名为“ChosenHeroes”的子组件“chosenHeroes”数组。如果数组中有元素,我想最终呈现一个div并能够更新父数组中的数组 我不确定我是否应该使用emit()以及如何确切地使用它。我尝试制作一个自定义事件“addHero”并将其传回。但是我遇到了错误 ChosenHeroes.vue HeroP

  • 我正在使用Vuejs 2(网页包简单模板),我想知道如何在呈现模板之前编译模板。下面是我的代码: App.vue main.js 这就是我启动服务器时遇到的错误: 我还尝试了这个插件vue模板编译器,但没有成功。你能帮我把它弄好吗?提前谢谢。

  • 本文向大家介绍vuejs父子组件通信的问题,包括了vuejs父子组件通信的问题的使用技巧和注意事项,需要的朋友参考一下 父子组件之间可以通过props进行通信: 组件的定义: 1.创建component类:  2.注册一个tagnme: 局部注册: 模板注意事项:  因为 Vue 就是原生的DOM,所以有些自定义标签可能不符合DOM标准,比如想在 table 中自定义一个 tr,如果直接插入 my

  • 我有一个要导入页面的组件: 在页面上,我呈现组件