Este es un simple simulacro de widgets:Acceso a instancia del widget de widget de fuera
(function ($) {
$.widget("ui.myDummyWidget", {
options: {
},
_create: function() {
},
hide: function() {
this.element.hide();
},
_setOption: function (key, value) {
$.Widget.prototype._setOption.apply(this, arguments);
},
destroy: function() {
$.Widget.prototype.destroy.call(this);
}
});
} (jQuery));
sólo añade una piel método que se puede llamar para ocultar el elemento. Fácil si se hace desde dentro widget de
this.hide();
Pero un escenario común es que desea llamar a métodos en una instancia de widget desde el exterior (actualización Ajax, u otros eventos externos)
Entonces, ¿cuál es la mejor manera de de acceder a la instancia de widget? Una forma es añadir la referencia al widget para el elemento, feo ...
_create: function() {
this.element[0].widget = this;
},
A continuación, se puede acceder a él desde el exterior haciendo
this.dummy = $("#dummy").myDummyWidget();
this.dummy[0].widget.hide();
Gracias! Los datos no eran un nombre muy bueno: D Pero funciona, esa es la parte importante: P – Anders
Por cierto, si no me gustan las cadenas o si usa Resharper y VS2010, puede hacer .data(). myDummyWidget; y se beneficia de intelisence y compila advertencias. – Anders
Aquí está la referencia oficial: https://api.jqueryui.com/jquery.widget/ (sección "Instancia") – noitseuq