Вопрос новичка в Dojo: как мне заставить отображать мой пользовательский виджет?

Я пытаюсь написать простой виджет Dojo HelloWorld, но не вижу результата в браузере. Структура каталога:

tutorial
  dojotoolkit
      dijit
      dojo
      dojox
      my_ext
         HelloWorldWidget.js
  test.html

Ниже приведены коды:

HelloWorldWidget.js

dojo.provide("my_ext.HelloWorldWidget");

dojo.require("dijit._Widget");
dojo.require("dijit._Templated");

dojo.declare(
"my_ext.HelloWorldWidget",[dijit._Widget,dijit._Templated], {
    templateString: '<div>This is a test</div>'
});

test.html

<html>
    <head>

    <script type="text/javascript">
        var djConfig = {
        isDebug:true, parseOnLoad:true
        };
    </script>

    <script type="text/javascript" src="dojotoolkit/dojo/dojo.js"></script>

    <script language="JavaScript" type="text/javascript">
        dojo.require("my_ext.HelloWorldWidget");
    </script>

    </head>
    <body>
       <!-- as an HTML element with dojoType attribute -->
       <div dojoType="HelloWorldWidget"></div>
    </body>
</html>

Будет очень полезно, если кто-нибудь укажет на ошибку. Я потратил довольно много времени безрезультатно на это. Спасибо.


person rgamber    schedule 10.06.2011    source источник


Ответы (2)


Вы проверяли консоль на наличие сообщений об ошибках?

Ваш виджет называется my_ext.HelloWorldWidget dojoType требуется это полное имя, чтобы найти виджет.

person peller    schedule 10.06.2011
comment
ну, я не ставил его на сервер. Я просто использую его как статические страницы, поэтому без консоли. Есть идеи? - person rgamber; 11.06.2011
comment
Я имею в виду консоль Javascript в браузере, которая будет работать независимо от того, где обслуживаются ваши файлы, или даже если они запускаются локально. Но помимо поиска консоли вы можете попробовать изменить значение атрибута dojoType. - person peller; 12.06.2011
comment
Ох, хорошо. Пишет "не удалось загрузить my_ext.HelloWorldWidget". Все пути кажутся правильными. Не уверен, что происходит. - person rgamber; 12.06.2011

Прежде всего, переместите этот блок js из головы в тело:

<script language="JavaScript" type="text/javascript">
  dojo.require("my_ext.HelloWorldWidget");
</script>

Во втором случае используйте полное имя вашего виджета в атрибуте dojoType:

<body>
    <script language="JavaScript" type="text/javascript">
        dojo.require("my_ext.HelloWorldWidget");
    </script>
    <div dojoType="my_ext.HelloWorldWidget"></div>
</body> 
person Andrei    schedule 13.06.2011
comment
Кроме того, вам больше не нужен language="JavaScript" в вашем теге (и на самом деле вам даже не нужен type="text/javascript", если вы используете тип документа HTML5). - person Brian Arnold Sinclair; 14.06.2011