Javascript 如何声明变量而不在vue中返回它?
我试图通过事件将函数发送给父组件,但当我试图声明将函数存储在'data(){return:}'中的变量时,函数会在变量接收到它后立即执行。我需要找到一个地方来声明变量,而不自动执行其中的函数Javascript 如何声明变量而不在vue中返回它?,javascript,html,vue.js,Javascript,Html,Vue.js,我试图通过事件将函数发送给父组件,但当我试图声明将函数存储在'data(){return:}'中的变量时,函数会在变量接收到它后立即执行。我需要找到一个地方来声明变量,而不自动执行其中的函数 //child export default: { data() { return { submit_method: { type: Function } } }, methods: { open(type) {
//child
export default: {
data() {
return {
submit_method: { type: Function }
}
},
methods: {
open(type) {
if(type == 'newFolder') {
this.$refs.newFolder.show()
this.submit_method = this.exportFile()
} else {
this.$refs.olderOmbudsman.show()
}
},
exportFile() {
if ( this.doc.origin.id != null ) {
window.open(`${window.globals.API_SERVER}/ombudsman/doc/?page=${this.doc.page}&origin=${this.doc.origin.id}`, '_target')
}else{
alert("Choose the origin!");
}
}
},
activated() {
this.$emit('export-ombudsman', submit_method)
}
}
我注意到的第一个奇怪之处是:
返回{
提交方法:{type:Function}
}
道具支持类型,数据
不支持。这里所做的就是将对象{type:Function}
分配给submit\u方法
然后是这个:
this.submit\u method=this.exportFile()
这将立即调用该方法。我想你的意思是:
this.submit\u method=this.exportFile
然后我们得到了这个:
this.$emit('export-ombudom',submit_方法)
在模板中,您需要删除访问成员的this.
,但不能在JavaScript中这样做。这需要:
this.$emit('export-ombuster',this.submit_方法)
所有这些都假设submit\u方法
是动态的。如果不是,则可以直接传递exportFile
:
this.$emit('export-ombudom',this.exportFile)
即使您确实需要函数是动态的,也不需要在
数据中声明submit\u方法
,除非您需要它是被动的。您仍然可以将其保存到此
,即使它不在数据中
为什么要将函数传递给父组件?谢谢!我不知道在方法立即调用它之后放置“()”,这就是发生的情况。此外,我需要的功能是被动的,但我不知道数据不采取类型。那么,我是否应该将其声明为空属性?@BrunoSouza在不知道如何使用它的情况下,我很难说出submit\u method
的初始值应该是什么,但是如果没有更合适的值,那么submit\u method:null
就足够了。