我想知道是否可以“扩展”在此模块中定义的名为canvas_listeners的函数以及如何执行此操作。 我对javascript很新,对不起,我甚至不确定这是否是一个模块:(
plugin.js
var XYZ = (function ($, xyz) {
'use strict';
var xyz = {};
xyz.canvas = {};
$(document).ready(function () {
canvas_start();
function canvas_start()
{
//something
canvas_listeners();
//something
}
function canvas_listeners()
{
xyz.canvas.on('object:selected', function (options) {
//something
});
}
});
return xyz;
}(jQuery, XYZ));
从另一个js文件中,我想在事件对象上添加canvas_listeners:modified。 这是我的尝试,但显然它不会触发,因为它不在canvas_listeners中。
myscript.js
$(document).ready(function () {
var XYZ = (function ($, xyz) {
xyz.jailBox = function() {
xyz.canvas.on('object:modified', function (options) {
//something
});
}
return xyz;
}(jQuery, XYZ || {}));
});
我已经搜索过但我找不到如何将我的事件添加到原始函数中。
Adding methods to JavaScript module pattern
http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.htm
感谢您的帮助。 问候 Ziqu
修改 好的,我找到了一种方法来向模块添加一个公共函数,但它仍然不会触发。插件使用fabric.js:canvas对象是在canvas_start()中创建的,它作为canvas_listeners()是私有的,我无法挂钩这两个函数。 在myscript.js中XYZ.canvas是:{}所以我得到错误 XYZ.canvas.on不是函数 在plugin.js中,xyz.canvas是:#
仍在寻找解决方案,我们将非常感谢您的帮助。
myscript.js
$(document).ready(function () {
XYZ = (function ($, xyz) { //without 'var'
xyz.jailBox = function() {
XYZ.canvas.on('object:modified', function (options) {
//my function code here
});
}
return xyz;
}(jQuery, XYZ || {}));
});