2009-07-23 3 views
0

В настоящее время я пишу крупномасштабное приложение, основанное на наборе инструментов dojo. Все приложение работает и стоит, но одна проблема, с которой я не могу найти выход, - это создание пользовательских виджетов. Это было бы полезно, потому что оно очистило бы мой исходный код, а также я смогу повторно использовать это «виджеты» в более поздних проектах.Виджеты Dojo по умолчанию

Например: у меня есть основная панель инструментов, которые я хотел бы назвать, используя

myapp.toolbar = new myapp.mainToolbar(); 

вместо использованием

myapp.toolbar = new new dijit.Toolbar({}, containerID); 
var button1 = new dijit.form.Button({ 
      label: 'Delete', 
      id: 'toolbarbutton1', 
      showLabel: true, 
      iconClass: "dijitEditorIcon dijitEditorIcon Delete" 
     }); 
myapp.toolbar.addChild(button1); 
... 

Короче говоря: как я создал целую панель где-то else и назвать его простым объектом? Попытка выяснить, dojo.declare('myapp.mainToolbar', dijit.Toolbar, {...}), но затем я получаю кучу ошибок, таких как «функция запуска не существует» и т. Д.

Я хотел бы сделать все это программно, поэтому без шаблонов html и css-файлов в пользовательском виджете ,

Ссылка на хороший учебник или Howto была бы хорошей, хотя Google или Yahoo! выявит любые дополнительные по этому вопросу для меня ... :)

ответ

0

Это работает для меня, когда я использую объявить с суперкласса внутри массива:

dojo.declare('myapp.mainToolbar', [ dijit.Toolbar ], 
       { 
       .... 
       } 
); 

var x = new myapp.mainToolbar({ ... }); 
x.startup(); 

Какой вид нарушает документы. Он должен принимать одну функцию или массив функций.

2

Существует несколько способов сделать это.

Кажется, что ваш метод расширения панели инструментов должен работать (не уверен, почему это не так).

Вы также можете объявить класс, который встраивает панель инструментов и кнопки, с помощью widgetsInTemplate:

dojo.declare("MyToolbar", [dijit._Widget, dijit._Templated], { 
    _widgetsInTemplate: true, 
    templateString: '<div> <div dojoType=dijit.Toolbar>' + 
       ' <button dojoType=dijit.form.Button ... 

Обратите внимание, что верхний узел в MyToolbar не может иметь dojoType, так что я положил панели инструментов на один уровень вниз.

В качестве альтернативы вы можете сделать то же самое, используя dijit.Declaration, см. http://docs.dojocampus.org/dijit/Declaration.

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