Javascript 从另一个vue.js组件通过此调用方法。$refs
我有一个要触发的同级元素Javascript 从另一个vue.js组件通过此调用方法。$refs,javascript,vue.js,vuejs2,vue-component,bootstrap-vue,Javascript,Vue.js,Vuejs2,Vue Component,Bootstrap Vue,我有一个要触发的同级元素 ... 方法:{ callFileLoader(){ 这是。$refs.fileUploader.click() } } Get:Uncaught TypeError:this.$refs.fileUploader.click不是函数 如果它是同级组件,则无法通过v-ref方法在同级组件中识别它。 如果没有嵌套的父组件,请尝试通过父组件或Vue根访问它: this.$root.$refs.fileUploader.click() 或者在同级组件b-img中使
...
方法:{
callFileLoader(){
这是。$refs.fileUploader.click()
}
}
Get:Uncaught TypeError:this.$refs.fileUploader.click不是函数
如果它是同级组件,则无法通过v-ref方法在同级组件中识别它。 如果没有嵌套的父组件,请尝试通过父组件或Vue根访问它:
this.$root.$refs.fileUploader.click()
或者在同级组件b-img
中使用this.$root.$emit()
,以触发事件,并将事件侦听器放置在b-file
组件的events
中,以捕获发出的事件并触发单击
因此,在b-img中:
methods:{
callFileLoader () {
this.$root.$emit('file-uploader-click');
}
}
而在b文件中
将是:
events:{
'file-uploader-click' : function() {
this.click();
}
}
您尝试在组件中放置v-on:event name=“action”
,而不是放置events方法:
VueTools chrome extension对于检查VueJs生成的正确引用名称非常有用。在调试之后,我找到了一种使用以下语句访问该输入的方法:
this.$refs.fileUploader.$el.firstChild
这是可以单击的
元素
newvue({
el:“应用程序”,
数据(){
返回{
文件:null,
文件2:null
}
},
方法:{
callFileLoader(){
这是。$refs.fileUploader。$el.firstChild.click();
}
}
});代码>
所选文件:{{file&&file.name}
负载
这意味着b文件不可单击首先检查b文件组件是否可单击,然后尝试以下操作:此。$refs.fileUploader.$el.click()
这些组件不是我的,因此我无法更改它们,然后尝试通过在已放置的组件实例中放置v-on来调用click,请更改您的问题,说明这些组件无法编辑:)谢谢!这些文件对$refs的范围非常不清楚。我不知道如何获得不同组件的$refs。我就是这样做的:$parent.$refs.notesComponent.$refs.notes.focus()是这个家伙的道具
this.$refs.fileUploader.$el.firstChild