调用时存储到变量而不是 运行 的函数
Function stored to a variable not running when called
我正在为 Trumbowyg 开发一个插件,我试图将一个函数存储在一个变量中,这样它可以在以后调用,但也可以在不改变包含的 javascript 文件的情况下覆盖。
问题是,当我尝试调用该函数时,它没有被调用。
这是我的相关代码:
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
,如果是这样,我将其设置为一个应该关闭模态的函数。
在我 .add_giphy
的点击处理程序中,insertImage
代码有效,但 plugins.giphycrumbs.close_modal
从未 执行(我不明白函数中嵌入的 console.log
消息)
如果我这样做 console.log(plugins.giphycrumbs.close_modal)
预期的功能将被放入控制台。
为什么 close_modal
函数没有在我的代码中执行?
回答
尝试在点击处理程序中向 close_modal
添加括号。
说明
在我看来你没有调用(调用)这个函数。
在您的点击处理程序中,有这一行 plugins.giphycrumbs.close_modal;
在 javascript 中,这是对 giphycrumbs
对象上的 属性 的引用。虽然它恰好是一个函数,但它不会被调用,除非你在它后面使用括号(并可选地给它一些参数)。
希望对您有所帮助!
我正在为 Trumbowyg 开发一个插件,我试图将一个函数存储在一个变量中,这样它可以在以后调用,但也可以在不改变包含的 javascript 文件的情况下覆盖。
问题是,当我尝试调用该函数时,它没有被调用。
这是我的相关代码:
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
,如果是这样,我将其设置为一个应该关闭模态的函数。
在我 .add_giphy
的点击处理程序中,insertImage
代码有效,但 plugins.giphycrumbs.close_modal
从未 执行(我不明白函数中嵌入的 console.log
消息)
如果我这样做 console.log(plugins.giphycrumbs.close_modal)
预期的功能将被放入控制台。
为什么 close_modal
函数没有在我的代码中执行?
回答
尝试在点击处理程序中向 close_modal
添加括号。
说明
在我看来你没有调用(调用)这个函数。
在您的点击处理程序中,有这一行 plugins.giphycrumbs.close_modal;
在 javascript 中,这是对 giphycrumbs
对象上的 属性 的引用。虽然它恰好是一个函数,但它不会被调用,除非你在它后面使用括号(并可选地给它一些参数)。
希望对您有所帮助!