Vue.js 从父事件触发子组件方法

Vue.js 从父事件触发子组件方法,vue.js,vue-component,Vue.js,Vue Component,我对VueJS和JavaScript非常陌生,非常感谢您的帮助 我的方法“问候”不起作用,我不确定原因。当我点击“更改为栏”按钮时,我得到错误信息: [Vue warn]:属性或方法“greet”未在实例上定义,但在渲染期间被引用。通过初始化属性,确保此属性在数据选项中或对于基于类的组件是被动的。请参阅: 发现于 ---> <Chatjsvue> at src\components\vueChartjs\Chatjsvue.vue <App> at s

我对VueJS和JavaScript非常陌生,非常感谢您的帮助

我的方法“
问候
”不起作用,我不确定原因。当我点击“更改为栏”按钮时,我得到错误信息:

[Vue warn]:属性或方法“greet”未在实例上定义,但在渲染期间被引用。通过初始化属性,确保此属性在数据选项中或对于基于类的组件是被动的。请参阅:

发现于

---> <Chatjsvue> at src\components\vueChartjs\Chatjsvue.vue
       <App> at src\App.vue
         <Root>
您需要将greet()方法添加到chartjs.vue组件,而不是chartjsline。

您的
组件(线条图的实例)是
Chatjsvue
组件的子组件

子方法仍然绑定到这些实例

但是,执行它们的方法非常简单:

  • 使用特殊属性保留对子组件的引用:
  • 在父方法中,使用访问引用的子方法
  • 然后您可以访问此子实例上的所有内容,包括其方法:
    this.$refs.myLineChart.greet()
  • 工作示例:

    Vue.component('chart-js'{
    模板:“#chartjs”,
    方法:{
    lineChildGreet(){
    //通过$refs访问子组件。
    //然后可以执行它的方法。
    这是.refs.myLineChart.greet();
    },
    },
    });
    Vue.组件(“折线图”{
    模板:“#折线图”,
    方法:{
    问候{
    警惕(“你好”);
    },
    },
    });
    var app=新的Vue({
    el:“#应用程序”,
    });
    
    
    
    • 在子组件上打招呼
    线条图
    谢谢。我原以为可以通过chartjsline.js文件调用这些方法,正如我在.vue文件中所做的那样,
    import LineChart from'@/assets/javascripts/chartjsline'
    ,但我想这不起作用-我现在调用了.vue文件中的方法-谢谢你如果我有
    LineChart
    ?如何从“chart js”组件在组件模板的根元素上触发单击事件?@webprogrammer您应该将其设置为一个新问题,并说明您的问题的具体细节,而不是评论一篇与您所说的不同的旧文章。ghybs,好的,谢谢!但我已经找到了解决办法。我想我的问题和你的答案有关。对不起打扰你了。