2015-07-31 7 views
0

Я использую додзё 1.10, и я отчаянно пытаюсь найти чистый способ для создания составных виджетов,Dojo, создание композитных виджеты

У меня есть следующий код:

TabsWidget.js 

require([......], function(.....template ....){ 

var Tabs = declare('...', [....], { 

templateString : template, 
region : 'center' 

}); 

var o = new Tabs({}, 'container'); 

widget.startup(); 

}); 

TabsWidget.html 


<div style="width: 100%; height: 100%;"> 
    <div-dojo-type="dijit/layout/TabContainer" style=".."> 
      ......Content pane........ 
    </div> 
</div> 

home.html 

...... 
<div data-dojo-type="TabsWidget"></div> 

Вкладка визуализации хорошо, они являются явно пустыми вкладками, и целью здесь является определение отдельного виджета, содержащего сетку и, возможно, форму поиска.

Я хочу, чтобы объявить этот виджет в одной из моих панелей контента, но я не уверен, как это сделать.

Может ли кто-нибудь объяснить, как это работает или указать мне на учебник/документ, указывающий, как лучше всего это сделать?

Заранее спасибо.

ответ

0

Ознакомьтесь с Доджо-доком по телефону creating template-based widgets.

Чтобы использовать свои вкладки в качестве стандартного виджета, его нужно организовать немного по-другому. В частности:

  1. Использование define определить свой модуль виджета, а не require
  2. Возвращение объявленная класса из модуля.

Так больше похоже:

define([ ... ], function (..., template, ...) { 
    return declare([ ... ], { 
     templateString: template, 
     ... 
    }); 
}); 

Кроме того, вы, как правило, установить свойство «область» при создании виджета, не определяя его. Сам виджет, вероятно, не использует «регион»; он предназначен для указания контейнера, в который нужно поместить виджет. Итак:

<div data-dojo-type="TabsWidget" data-dojo-props="region:center"></div> 
+0

Привет спасибо очень много для указателей, я с поправками. К сожалению, пытаясь поместить виджет в один из моих ContentPane, я вижу div, для которого виджет предназначен для присоединения, но ничего другого. Я прокрутил этот виджет. Есть ли необходимость указывать метод запуска, я указал myGrid.startup() в post create, но я ничего не получаю, даже сообщение об ошибке. – user1383163

+0

Предполагая, что ваша ContentPane доступна как переменная 'contentPane', а вещью, которую вы хотите быть ее содержимым, является' widget', вы должны установить контент с помощью 'contentPane.set ('content', widget);'. – jason0x43

+0

Я вижу, мне удалось получить контентную панель, я вижу, что один div добавлен с моим идентификатором виджетов, но не выглядит, как виджет запускается – user1383163

0

для того, чтобы достичь этого легко можно создать виджет на основе родительского шаблона с одного родительского DIV в этой бывшей: <div data-dojo-attach-point="parentDiv"> </div> и поместить вкладку или область содержимого в этом, а затем создать другой виджет на основе шаблона по отдельности и вы можете создать экземпляр этого виджета (который содержит сетку или окно поиска) из родительского виджета и разместить этот виджет в теге div панели содержимого. Вы можете генерировать события из дочерних виджетов, чтобы любая функция могла быть запущена на этом событии.

Tutor для создания виджетов на основе шаблона в додзё: http://haritechtalk.blogspot.in/2015/09/how-to-create-template-based-widget-in.html

Смежные вопросы