Я создаю плагин jQuery и хочу предложить несколько расширений, чтобы сделать решение более модульным. Я думаю, что у меня есть правильный синтаксис для выполнения расширения, но я не могу назвать какой-либо из методов моего расширения. Я только включил разделы кода, чтобы попытаться быть кратким, но при необходимости я могу предоставить больше. Любая помощь высоко ценится!Вызов метода в расширении jQuery
Я использую http://jqueryboilerplate.com/ для моего основного модуля и это StackOverflow ответ для добавления мои методы расширения: Best Way to Extend a jQuery Plugin
Главная JQuery плагин
function Plugin(element, options) {
this.element = element;
// jQuery has an extend method which merges the contents of two or
// more objects, storing the result in the first object. The first object
// is generally empty as we don't want to alter the default options for
// future instances of the plugin
this.options = $.extend({}, defaults, options);
this._defaults = defaults;
this._name = pluginName;
this.init();
}
Plugin.prototype = {
init: function() {
//This line does NOT work
var id = this.showId();
console.log(id);
var toolbar = this.createToolbar(this.options);
$(this.element).append(toolbar);
if(this.options.showPalette)
{
var palette = this.createPalette(this.options);
$(this.element).append(palette);
this.fetchPalette();
}
var canvas = this.createCanvas(this.options);
$(this.element).append(canvas);
}, ....
Plugin Конструктор
$.fn[pluginName] = function (options) {
return this.each(function() {
if (!$.data(this, "plugin_" + pluginName)) {
$.data(this, "plugin_" + pluginName, new Plugin(this, options));
}
});
};
метод выдвижения
var extensionMethods = {
/*
* retrieve the id of the element
* this is some context within the existing plugin
*/
showId: function(){
return this.element[0].id;
}, ....
JQuery простираться
$.extend(true, $['fn']['workflowEditor'].prototype, extensionMethods);
Спасибо, с несколькими другими битами, я думаю, что у меня есть кости чего-то работающего. Посмотрел интерфейс jQuery. В основном, я просто пытаюсь разделить отдельные части моего плагина в разных файлах, чтобы избежать огромного файла javascript на 100 000 строк. – Mark
@Mark должен работать, но не забывайте, что вы не можете делиться лексически ограниченными («частными») переменными между модулями кода. – Alnitak