Я борюсь с тем, как лучше сочетать классы JavaScript и плагины jQuery. Этот вопрос не очень конкретный, я надеюсь, что это указатели на дополнительные ресурсы.
По сути, я хочу хранить данные о состоянии и частные методы в классе, а затем расширять каждый объект jQuery, для которого я вызываю свой плагин, чтобы иметь эти частные методы и свойства. Так, что внутри плагина я могу вызывать методы непосредственно из объекта jQuery.
Я прочитал шаблон проектирования плагинов jQuery (общепринятая практика?) Для работы с частными функциями , в частности, ответ Дэвида, однако каждый раз он инициализирует новый класс и, следовательно, не может использоваться для сохранения состояния. объекта.
Я также нашел http://fuelyourcoding.com/jquery-plugin-design-patterns-part-i/,, который рекомендует создать класс и затем сохранить его в .data ().
В идеале я думаю, что я хочу закончить тем, что код выглядит как
(function( $ ){
var methods = {
init : function( options ) { // Initialize each object with a state and private methods },
show : function( ) {
// testFoo() is a private method that checks the element's state
if(this.testFoo()){
// Relying on jQuery's html() method
this.html() = this.fooTemplate();
}
}
};
// Boiler plate plugin from http://docs.jquery.com/Plugins/Authoring
$.fn.myPlugin = function( method ) {
// Method calling logic
if ( methods[method] ) {
return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));
} else if ( typeof method === 'object' || ! method ) {
return methods.init.apply( this, arguments );
} else {
$.error( 'Method ' + method + ' does not exist on jQuery.myPlugin' );
}
};
})( jQuery );
Наконец, не похоже, что я могу запекать приватные методы непосредственно в плагин, потому что такие методы, как "testFoo ()", возвращают логическое значение и, следовательно, не являются цепочечными.
Мысли? Правильно ли я подхожу к этому? Есть ли другой шаблон дизайна, который я должен использовать? Возможно, вообще не использует архитектуру плагинов jQuery?