2012-05-29 4 views
1

Я пытаюсь использовать некоторый виджет «dijit» из сценария, например, для изменения содержимого или для подключения события.Использование data-dojo-id в dojo 1.7

С этой целью я пытаюсь использовать атрибут data-dojo-id в html, который (как я понял) создает глобальный объект типа «data-dojo-type» и имя «data-dojo-id».

Но у меня были ошибки ... Что я делаю неправильно?

<!doctype html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8"> 
     <title>Dojo test</title> 
    </head> 
    <body> 
     <div id="myDivId" 
       data-dojo-type="dijit.layout.ContentPane" 
       data-dojo-id="myDojoId"> 
     Hello Everyone! 
     </div> 
     <script src="http://ajax.googleapis.com/ajax/libs/dojo/1.7.1/dojo/dojo.js" data-dojo-config="async: true, parseOnLoad:true"></script> 
     <script type="text/javascript"> 
     require(["dijit/dijit", "dijit/layout/ContentPane"], function(){ 
      //myDojoId.setContent("Hello World!"); // error : myDojoId is not defined 

      // Even this not working: 
      console.log(dijit.byId("myDivId"));  // undefined 
      console.log(dijit.byId("myDojoId")); // undefined 
      }); 
     </script> 
    </body> 
</html> 

ответ

3

data-dojo-id и jsId (устаревшее) атрибуты создают глобальный объект со ссылкой на эту Dijit.

Я считаю, что вам нужно обернуть поиски в готовом() вызов

<script type="text/javascript"> 
     require(["dojo/ready","dijit/dijit", "dijit/layout/ContentPane"], function(ready,dijit,ContentPane){ 
      //shouldn't be defined yet 
      console.log(dijit.byId("myDivId"));  // undefined 
      console.log(myDojoId); // undefined 

      ready(function(){ 
      console.log(dijit.byId("myDivId")); 
      //note how data-dojo-id doesn't have the lookup 
      console.log(myDojoId); 
      }); 
     }); 
</script> 
Смежные вопросы