一些基本小部件的方法我有两个jQuery的窗口小部件,小工具A是基一个和所述窗口小部件乙继承的widget A.继承jQuery的窗口小部件,并调用从外部
小窗口的:
$(function() {
$.widget("custom.widgetA", {
_create: function() {
this.element
.addClass('ui-widget-a')
.append(
$(document.createElement('div')).text('Widget A')
);
},
someMethod: function() {
return 'widget A';
}
});
}(jQuery));
的widget乙:
$(function() {
$.widget("custom.widgetB", $.custom.widgetA, {
_create: function() {
this.element
.addClass('ui-widget-b')
.append(
$(document.createElement('div')).text('Widget B')
);
this._super();
},
someOtherMethod: function() {
return 'widget B';
}
});
}(jQuery));
比我申请的Widget B到一些HTML元素
$('#widgetB').widgetB();
,现在我想从控件的调用方法someMethod
......为了做到这一点我用这个代码
$('#widgetB').widgetA('someMethod')
,但得到的错误信息
不能调用之前widgetA方法初始化;试图 调用方法“的someMethod”
我知道如果我把它叫做这样它会工作
$('#widgetB').widgetB('someMethod')
,但我需要使用基本控件调用它......可能吗?
这里是fiddle用我的例子
UPDATE
为什么会发生这样的原因here
是的,我也在想它......但这是一个因素,阻止我从这个解决方案...在这种情况下,从窗口小部件_create方法将被调用两次。这就是为什么我认为这不是最佳解决方案,应该有更好的解决方法。 – 2014-09-02 10:58:34
好吧,经过一番思考......如果从小部件B中删除this._super()_create方法,并且只留下this.element.widgetA(this.options)它将解决问题,并且将从小部件A调用_create方法只有一次。请更新您的代码,我会接受它。感谢您的想法! – 2014-09-02 11:14:36
@AlexWheat这就是我的意思是“只包括一个初始者”,这就是小提琴。以上片段只是概念:) – blgt 2014-09-02 12:07:39