看看这个简单的小提琴:
http://jsfiddle.net/mercmobily/y4uG2/10/
基本上我声明了一个Widget,并开始添加子窗口小部件。有一次,我有子窗口小部件“部分”,它是一个带有标签容器和子标签的模板化小部件。
主要小部件有:
'<div data-dojo-type="Section" data-dojo-props="title: \'Sub Widget\'" data-dojo-attach-point="section"></div>' +
那个“部分”小部件有:
templateString: '' +
' <div>' +
' <div class="subWidget" data-dojo-type="dijit.layout.TabContainer" tabPosition: \'left-h\'" dojo-attach-point="tabCont" >' +
' <div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="title: \'Second Widget one\'">Second Widget One</div>' +
' <div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="title: \'Second Widget Two\'">Section Widget Two</div>' +
' </div>'+
' </div>'
现在,我正在努力获取子窗口小部件“section”,以便正确呈现。 在我的实际节目中,我现在玩了:
(关于第(3)点,我必须做类似的事情:
resize:function(){ this.inherited(参数); console.log(“调用主窗口小部件中的调整大小!”); this.settingsTab.resize(); }
此时,我疯了,因此问题是:什么是接受,正常和常见方式以确保,在小提琴中,当你实例化主要的小部件时会渲染子小部件吗?
PLUS,我是否需要指定高度:我使用过的每个标签容器都是100%? (它看起来像)
谢谢!
我更新了小提琴。此时我在标签容器中添加了“高度”。在那之后,浏览器窗口的实际操作确实可以解决问题(!)。我不太清楚为什么我需要那个高度,但是好的。
http://jsfiddle.net/mercmobily/y4uG2/16/
当用户点击“损坏的”小部件时,我也做了一个on(),并且 - 猜猜是什么 - 运行resize并且渲染得很好。
这更没意义。为什么我自己的小部件与模板中定义的小部件有什么不同?我开始了各种各样的理论:高度无法计算,因为它没有显示,例如。但是,SAME应该应用于带有子标签的其他标签,左侧标记为“复杂”!
我没有想法。不,真的。
答案 0 :(得分:4)
确实有一个拼写错误,正如Frode所说,但如果您希望标签内容显示在SubWidget
中,您仍需要点击其中一个标签。
我建议您更正拼写错误并使您的窗口小部件ContentPane
而不是_WidgetBase
来解决此问题,因为ContentPane
知道如何调整自身大小,如下所示:
declare('SubWidget', [ContentPane, _TemplatedMixin, _WidgetsInTemplateMixin], {
templateString: ''...
请参阅http://jsfiddle.net/psoares/YwWst/
顺便说一句,没有必要在1.8中指定widgetsInTemplate : true
。添加_WidgetsInTemplateMixin
就足够了......
答案 1 :(得分:0)
SubWidget中的templateString有拼写错误。可能只是那样吗?
...<div style="height:100%" data-dojo-type="dijit.layout.TabContainer" tabPosition: \'left-h\'" data-dojo-attach-point="tabContainer" >'...
应该是:
<div style="height:100%" data-dojo-type="dijit.layout.TabContainer" data-dojo-props="tabPosition: \'left-h\'" data-dojo-attach-point="tabContainer" >'
这似乎是你小提琴中的伎俩:http://jsfiddle.net/y4uG2/18/