2011-11-14 2 views
1

하위 위젯을 사용하여 Dojo 양식 (dijit.form.Form)을 복제하는 방법은 무엇입니까? 이상적으로, 복제 위젯의 ID도 변경하고 싶습니다. 또한 위젯에 첨부 될 수있는 이벤트를 복제하는 데 관심이 있습니다.dojo : 위젯을 복제하는 방법?

dojo.clone으로 약간 연주했지만 DOM 개체에서만 작동합니다.

덕분에

+0

예제 코드가 유용 할 것입니다. 'dijit.form.Form'을 상속받는 것이 정말로 필요한 것 같습니다. Dojo는 고유 한 ID를 처리하므로 비 문제점이됩니다. – fncomp

+0

Dojo 1.7에서 비동기 로더를 사용하고 있습니까? – fncomp

+0

아니오, Dojo 1.7에서 비동기 로더를 사용하지 않습니다. Dojo 1.6.1 사용 – Ayyoudy

답변

2

후, 난 그냥 새로운 위젯을 만들 것, 상속는 당신이 필요 정말 가정. 비동기 로더와 Dojo 1.7을 사용한다고 가정하십시오.

dojo.provide('mynamespace.CustomForm'); 

// Do this for all child widgets and anything else you use. 
dojo.require('dijit.form.Form'); 
dojo.require('dijit._Templated'); 
dojo.require('dijit.form.TextBox'); 

dojo.declare('mynamespace.CustomForm', [dijit.form.Form, dijit._Templated], { 

     widgetsInTemplate: true, 

     // Make a template, I usually use a separate file. 
     templateString: '<form dojoType="dijit.form.Form">' + 
          '<input dojoType="dijit.form.TextBox" />' + 
         '</form>' 

     postCreate: function() { 
      this.inherited(arguments); 
      // Attach your specialized events. 
     } 
    }); 
}); 

모듈은 다음 var container = someElement; new path.to.File({}, container);로 사용할 수 있습니다 :

define([ 
    'dojo', 
    'module', 
    'dijit/form/Form', 
    'dijit/form/TextBox', 
    'dijit/_TemplatedMixin', 
    'dijit/_WidgetsInTemplatedMixin' 
], function (dojo, module, Form, TextBox, _TemplatedMixin, _WidgetsInTemplatedMixin) { 
    // I have a wrapper for declare that handles this, but... 
    return dojo.declare(module.id.replace(/\//g, '.'), [Form, _TemplatedMixin, _WidgetsInTemplatedMixin], { 

     widgetsInTemplate: true, 

     // Make a template, I usually use a separate file. 
     templateString: '<form data-dojo-type="dijit.form.Form">' + 
          '<input data-dojo-type="dijit.form.TextBox" />' + 
         '</form>' 

     postCreate: function() { 
      this.inherited(arguments); 
      // Attach your specialized events. 
     } 
    }); 
}); 

당신이 동기화 로더를 사용하는 경우, 당신이 원하는 것 dojo.declare : 뭔가 같이 할 것입니다. 또는 마크 업에서 위젯을 선언 할 수 있습니다. 더 구체적으로 만들거나 다른 버전의 Dojo에 적용 할 수 있는지 알려주십시오.

관련 문제