2012-09-28 5 views
0

사용자 정의 모듈을 작성했습니다. 예를 들어, 콘솔에 "Hello World"을 인쇄하고 있습니다.dojo 1.7.2+ 사용자 정의 모듈 필요

require([ 
    "dojo/_base/declare" 
    ], 
    function(declare) { 

     return [ 
      declare("Hello", null, { 

       printHello : function() { 
        console.log("Hello, World!"); 
       } 
      }) 
     ]; 
    } 
); 

는 그리고 .js 파일의 이름은 "Hello.js"입니다. HTML 페이지에서이 모듈이 필요하지만로드하는 데 문제가 있습니다. 내 코드 :

<script type="text/javascript"> 
    var dojoConfig = { 
      async : true, 
      parseOnLoad : false, 
      isDebug : true, 
     packages: [ 
        { name: "gui", location: "/scripts/gui" } 
     ] 
    }; 
    require([ 
       "gui/common/Hello" 
      ], 

    function(HelloFunciton) { 
     var hello = new Hello(); 
     hello.printHello(); 

    }); 
</script> 

하지만 콘솔에서 오류가 있습니다

"NetworkError: 404 Not Found - http://ajax.googleapis.com/ajax/libs/dojo/1.7.2/scripts/gui/common/Hello.js" 

를 그것은 로컬 호스트에서 자바 스크립트 파일이 ... 은 어떤 문제가 될 수있는 것인가?

답변

1

dojoConfigbaseUrl: "./"을 추가하십시오.

또한 패키지의 경로를 ./scripts/gui을 통해 상대 경로로 지정하십시오.

전체 HTML 파일 :

<html> 
    <head> 
     <script> 
      var dojoConfig = { 
       async: true, 
       baseUrl: "./", 
       parseOnLoad: false, 
       isDebug: true, 
       packages: [ 
        { name: "gui", location: "./scripts/gui" } 
       ] 
      } 
     </script> 
     <script src="http://ajax.googleapis.com/ajax/libs/dojo/1.7.2/dojo/dojo.js"></script> 
     <script> 
      require(["gui/common/Hello"], function(Hello) { 
       var hello = new Hello(); 
       hello.printHello(); 
      }); 
     </script> 
    </head> 
    <body> 
    </body> 
</html> 

모듈 파일 ./scripts/gui/common/Hello.js :

define([ 
    "dojo/_base/declare" 
], function(
    declare 
) { 

    return declare([], { 
     printHello: function() { 
      console.log("Hello world!"); 
     } 
    }); 

}); 
관련 문제