繁体   English   中英

Function 存储到调用时未运行的变量

[英]Function stored to a variable not running when called

我正在为 Trumbowyg 开发一个插件,我试图将 function 存储在一个变量中,以便以后可以调用它,但也可以在不更改包含的 javascript 文件的情况下进行覆盖。

问题是,当我尝试调用 function 时,它没有被调用。

这是我的相关代码:

init: function (trumbowyg) {
    
    var plugins = trumbowyg.o.plugins;

    ...
    
    if(!plugins.giphycrumbs.close_modal) {
        plugins.giphycrumbs.close_modal = function() {
            console.log('close modal');
            $(plugins.giphycrumbs.modal_selector).modal('hide');
        }
    }
    
    $(document).on('click', '.add_giphy', function() {
        trumbowyg.execCmd('insertImage', $(this).attr('src'), false, true);
        
        plugins.giphycrumbs.close_modal;
        
    });
    
    // If the plugin is a button
    trumbowyg.addBtnDef('giphycrumbs', {
            //this function is handled exactly the same way except it actually works
        fn: plugins.giphycrumbs.open_modal
    });
}

在上面的代码中,您可以看到我正在检查plugins.giphycrumbs.close_modal是否未设置,如果是这样,我将其设置为 function 应该关闭模式。

在我的.add_giphy点击处理程序中, insertImage代码有效,但plugins.giphycrumbs.close_modal从未执行(我没有在函数中嵌入console.log消息)

如果我做console.log(plugins.giphycrumbs.close_modal)预期的 function 被放入控制台。

为什么close_modal function 没有在我的代码中执行?

回答

尝试在单击处理程序中为close_modal添加括号。

解释

在我看来,您并没有调用(调用)这个 function。

在您的点击处理程序中,有这一行plugins.giphycrumbs.close_modal;

在 javascript 中,这是对giphycrumbs object 上的属性的引用。 尽管它恰好是 function,但除非您在其后使用括号(并可选地给它一些参数),否则它不会被调用。

希望有帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM