我的问题是关于渲染按钮 VUE </跨度> 例如,单击一个按钮然后再渲染另一个按钮,点击事件,如果我简单地安装按钮就不会得到功能测试。
const Hello锟拷= { 道具:[‘text’], 模板:’&lt; button v-on:click =“tes”&gt; &LT; /按钮&GT; ”,};
新 Vue公司 </跨度> ({ el:‘#app’, 数据:{ 消息:‘点击我’ }, 方法:{ alertar:function(event锟拷
只是扩大了@Philip的答案 基本上,您无法在以编程方式创建的组件中访问父方法。 您需要在子组件中指定方法。
const Hello = { props: ['text'], template: '<button v-on:click="this.tes"> Vue Generated</button> ', methods: { tes: function(){ alert('Teste'); }} }; new Vue({ el: '#app', data: { message: 'Hello Vue.js!' }, mounted(){ this.alertar() }, methods:{ alertar: function(event){ const HelloCtor = Vue.extend(Hello); var instance = new HelloCtor({ propsData: { text: 'HI :)' } }) instance.$mount() // pass nothing this.$refs.container.appendChild(instance.$el) }, tes: function(){ alert('Teste'); } } })
在这里查看这个小提琴 https://jsfiddle.net/50wL7mdz/370645/
但是在某些情况下,您可以使用以下方法访问父组件方法 $父 我认为在以编程方式创建组件时不起作用的指令。
问题是您在父级内部创建子组件 Vue 包含绑定到的模板 tes 功能。这意味着孩子将寻找自己的方法 tes ,但它是你父母的财产,而不是孩子本身的财产,所以它永远无法在自己的范围内找到它。您必须将该函数添加到子组件:
Vue
tes
const Hello = { props: ['text'], template: '<button v-on:click="tes"> </button> ', methods: { tes: function(){ alert('Teste'); } } };