Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何声明变量而不在vue中返回它?_Javascript_Html_Vue.js - Fatal编程技术网

Javascript 如何声明变量而不在vue中返回它?

Javascript 如何声明变量而不在vue中返回它?,javascript,html,vue.js,Javascript,Html,Vue.js,我试图通过事件将函数发送给父组件,但当我试图声明将函数存储在'data(){return:}'中的变量时,函数会在变量接收到它后立即执行。我需要找到一个地方来声明变量,而不自动执行其中的函数 //child export default: { data() { return { submit_method: { type: Function } } }, methods: { open(type) {

我试图通过事件将函数发送给父组件,但当我试图声明将函数存储在'data(){return:}'中的变量时,函数会在变量接收到它后立即执行。我需要找到一个地方来声明变量,而不自动执行其中的函数

//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
就足够了。