2014-08-26 3 views
0

저는 위와 같은 사용자 정의 위젯을 얻었으므로 테스트 목적으로 작업하려하지만 렌더링 할 수 없습니다. (디렉토리 위젯/템플릿/MyWidget.js에 위치)사용자 정의 dojo 위젯이 렌더링되지 않습니다.

내 위젯은 다음과 같습니다

 define([ 
    "dojo/_base/declare", 
    "dijit/_WidgetBase", 
    "dijit/_TemplatedMixin", 
    "dojo/text!Widgets/Templates/MyWidgetTemplate.htm" 
    ], 
    function (_WidgetBase, _TemplatedMixin, personTpl) { 
     return 
     declare([_WidgetBase, _TemplatedMixin], { 
      templateString: personTpl 


     }); 
    } 
); 

내 템플릿 (위젯/템플릿/MyWidgetTemplate.htm에 위치)입니다 : 결국 나는 어떤 substituion을 다하겠습니다,

...

:

<dl> 
<dt>Name</dt><dd data-dojo-attach-point='nameNode'>Bob Jones</dd> 
<dt>Age</dt><dd data-dojo-attach-point='ageNode'>29</dd> 
</dl> 

내 메인 페이지 (을 Test.htm)에 코드에서 인스턴스화하려고 :하지만 그냥 지금 표시 할

<script> 
require([ 
    "Widgets/Templates/MyWidget", "dojo/_base/declare", "dojo/parser", "dojo/ready", "dijit/registry", 
    "dojo/domReady!" 
    ], function (MyWidget, declare, parser, ready, registry) { 


var w = new MyWidget(); 
registry.byId("Content").addChild(w); 

});

- 아무 것도 나타나지 않습니다.로드 된 것을 알 수 있도록 크롬 디버거에서 MyWidget.js와 MyWidgetTemplate.htm을 모두 볼 수 있습니다. 나는 또한이 같은를 Test.htm에 declaritively 위젯의 인스턴스를 시도했다 :

<div dojoType="Widgets.Templates.MyWidget"> 

를하지만 오류가 발생합니다 : 생성자를 확인할 수 없습니다를 'Widgets.Templates.MyWidget

어떤 아이디어가 될 것이다 대단히 감사합니다 -이 일이 계속되는 것을 나는 모른다.

고마워!

답변

0

좋아 보이지만 모듈 내에 dojoConfig을 넣으면 안됩니다. dojoConfig은 위젯과 같은 맞춤 패키지를 해결할 수 있도록하기 위해 필요하지만 모듈 자체에 배치하면 아직 해당 위치를 볼 수 있도록 구성되지 않았기 때문에 찾을 수 없습니다. 그 대신에

dojoConfig 예를 들어,로드 전에 도장 로더 ( dojo.js를) 를로드하는 스크립트에 배치해야합니다 :

<script type="text/javascript"> 
    var dojoConfig = { 
    parseOnLoad:true, 
    async: true, 
    packages: [{ 
     name: "Widgets", location: location.pathname.replace(/\/[^/]+$/, "") + "/Widgets" 
    }] 
    }; 
</script> 
<script type="text/javascript" src="mylibs/dojo/dojo.js"></script> 

당신이 AMD를 사용할 필요가 로딩 짐을 싣는 사람.

require([ "Widgets/Templates/MyWidget" ], function(MyWidget) { 
    var w = new MyWidget(); 
    // ... 
}); 

선언적을 사용하려는 경우, 당신은 또한 포함해야한다 : 당신이했던 여부 (또는 단순히 멀리 코드를 왼쪽) 나도하지만 위젯을로드하는 데 사용할 수있는, 잘 모르겠어요 dojo/parser 모듈 :

require([ "Widgets/Templates/MyWidget", "dojo/parser" ], function() { 
    // Do other stuff 
}); 
+0

감사합니다. 모듈에서 dojo 구성을 제거하고 Test.htm 페이지에 있습니다. 내가 받고있는 오류 : var w = new MyWidget(); 입니다 TypeError 객체가 함수가 아닙니다 – pvitt

+0

'require()'문을 사용하십시오. – g00glen00b

+0

위젯에서 dojoconfig를 제거하고 test.htm에 require 문을 추가하기 위해 위 코드를 변경했습니다. – pvitt

관련 문제