1

たとえば、コンテンツを変更したり、イベントを接続したりするために、スクリプトから「dijit」ウィジェットを使用しようとしています。

この目的のために、html で「data-dojo-id」属性を使用しようとしました。これは、(私が理解したように)「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>
4

1 に答える 1

3

data-dojo-idおよび jsId (非推奨) 属性は、その dijit を参照するグローバル オブジェクトを作成します。

ルックアップを ready() 呼び出しでラップする必要があると思います

<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>
于 2012-05-29T13:29:03.143 に答える