2010-12-20 5 views
3

내 사이트의 맞춤 위젯을 만들려고했습니다. 페이지를로드했을 때 다음과 같이 말합니다 : mixin # 0은 호출 가능한 생성자가 아닙니다. clsInfo.cls.prototype이 정의되지 않았습니다. clsInfo에 대한 정보를 찾을 수 없으므로 무엇인지 알 수 없습니다. 어쩌면 내가 구글에서 도장을 사용하는 문제 :dojo 위젯 초기화

그리고 내 자신의 스크립트는 로컬 호스트에 있습니다. 그래서 페이지의 내 도장이 초기화 될 때 스크립트에 문제가 발생합니다. 도장에 대한 좋은 정보를 찾을 수 없습니다. 아마도 잘못된 장소에서 검색합니까? 내 문제를 해결하는 데 도움주세요

+2

위젯에 대한 dojo.declare 문을 게시하십시오 (적어도 일부분). 누군가가이 정보로 당신의 문제를 짐작할 것 같지는 않습니다. – kioopi

답변

0

Dojo를로드하고 있습니까? dojo.addOnLoad()에 코드를 넣었습니까? CDN을 사용할 때 때때로 실행 시간에 문제가 발생합니다. dojo.addOnLoad()는 DOM이로드 될 때 트리거 될뿐만 아니라 dijo._Widget과 같이 dojo 리소스가 다운로드 될 때 호출됩니다.

3

dijit.Dialog를 재정의하려고 할 때이 문제가 발생하여 이벤트를 컨트롤에 바인딩 할 수있었습니다. 우리는 바인딩 부분이 작동하는지 아직 보지 못했지만 소스를 살펴보면 두 번째 인수로 전달 된 기지 중 하나가 "[객체 함수]"로 해석되지 않을 때 발생합니다. 내 경우에는, 내가 문자열을 통과했다

dojo.declare 3 개 인수를 취합니다.

  • 기본 클래스의 배열을 구축하고 사용자 정의 개체 "클래스"의 이름, 내가 DIJ를 오버라이드 (override) 할 경우 부모는 기능 (해당 클래스의 하지 문자열 이름)
  • 기능의 해시 선언 그래서

를 제공하기 위해 it.Dialog, 내가해야 할 :

dojo.declare("myDialogType", [dijit.Dialog], { 
    function1() {/*Code*/}, 
    function2() {/*Code*/} 
} 

내가 나의 두 번째 인수로 [ "dijit.Dialog을"] 있었고, 그게 문제였다. 난 강력하게 이런 유형의 문제 일 및 디버그 있는지 파악하기는 Dojo 라이브러리보다는 CDN의 압축되지 않은 로컬 복사본과 웹 관리자 나 방화범을 사용하는 것이 좋습니다

. Dojo의 문서는 광범위하지만 일부 영역에서는 완전하지는 않으며 일부 동작은 코드가 기대하는 바를 조사하여 알아 내야합니다. 저자에게 약간의 의도는 아닙니다. 일단 당신이 그것을 얻으면 그것은 꽤 멋진 제품이고, 자원 봉사 일을위한 어떤 문서도 감사합니다.

0

내 주문의 순서가 엉망이되어 _WidgetBase이 아니고 _WidgetBase이 실제로 존재하지 않는 경우이 문제가 발생했습니다. 망칠 간단한 장소처럼 보입니다.