2012-02-16 2 views
3

Я делаю небольшой виджет dojo, в основном расширяя виджет dailog и хочу добавить простые виджеты, такие как ввод текста несколькими ярлыками и т. Д. Как мне это сделать? Я следую учебник,Добавление виджета dojo внутри пользовательского виджета

Dojo how to make a widget

Пожалуйста, помогите мне.

Благодаря

ответ

7

Во-первых. Я плохо разбираюсь в английском, но буду делать все от меня зависящее.

Это путь к моему виджню.

enter image description here

Здесь. Важный код в файле js, который должен объявить.

dojo.provide("gissoft.dijit.widgetOam"); 

dojo.require("dojo.parser"); 
dojo.require("dijit._Widget"); 
dojo.require("dijit._Templated"); 

dojo.declare("gissoft.dijit.widgetOam", [dijit._Widget, dijit._Templated], { 
    widgetsInTemplate: true, 
    basePath: dojo.moduleUrl("gissoft.dijit"), 
    templatePath: dojo.moduleUrl("gissoft.dijit", "templates/widgetOam.html"), 

    constructor: function() { 

    }, 

    postMixInProperties: function() { 

    }, 

    postCreate: function() { 

    }, 

    startup: function() { 

    } 

}); 

И в файле widgetOam.html (templatePath)

<div> <!-- do not add tag <html> , <head> , <body> but must have <div> first --> 
    Hello World. 
</div> 

И это, как позвонить виджет из моего Default.aspx

Вы должны добавить это перед вами позвоните в библиотеку додзё

<script> 
    djConfig = { 
     parseOnLoad: true, 
     baseUrl: './', 
     modulePaths: { 'gissoft.dijit': 'js/gissoft/dijit' } 
    }; 
</script> 

И в теле

<body class="tundra"> 
    <form id="form1" runat="server"> 
    <div> 
     <div data-dojo-type="gissoft.dijit.widgetOam"></div> 
    </div> 
    </form> 
</body> 
+0

Что делать, если я хочу добавить один пользовательский виджет в другой пользовательский виджет во время выполнения? например Я сделал 'declare (" _ MyCustomWidgetContainer ", ...)', которые имеют 'ul' в своем' this.domNode', и я 'declare (" _ MyCustomWidgetItem ", ...)' (который разбивается на ' li'), который я хочу вставить в эту 'ul'? –

+1

Mr. @ NeelBasu, если я не пропущу точку. Вы спросили меня, что можно добавить один пользовательский виджет в другой пользовательский виджет? Ответ - да, вы можете. И посмотрите небольшой пример с domNode, работающим [здесь] (http://dojotoolkit.org/documentation/tutorials/1.6/dom_functions /) – OammieR

3

Если я правильно понял, вы спрашиваете о том, как включить другие виджеты внутри вашего пользовательского виджета. Если это так, то нам нужно немного изменить ответ OammieR, так как он не является полным в отношении вашего вопроса. Чтобы включить другие виджеты внутри вашего пользовательского виджета, вы должны включить их в виджете декларации:

dojo.provide("gissoft.dijit.widgetOam"); 

dojo.require("dijit.form.Button"); //<- this the standard widget you want to have in your widget 
dojo.require("dojo.parser"); 
dojo.require("dijit._Widget"); 
dojo.require("dijit._Templated"); 

dojo.declare("gissoft.dijit.widgetOam", [dijit._Widget, dijit._Templated], { 
    widgetsInTemplate: true, 
    basePath: dojo.moduleUrl("gissoft.dijit"), 
    templatePath: dojo.moduleUrl("gissoft.dijit", "templates/widgetOam.html"), 

особенно важным является «widgetsInTemplate: правда» часть, которая говорит анализатору ожидать виджетов внутри виджета.

Затем вы просто включаете разметку HTML для конкретного виджета, который вы хотите включить в шаблон вашего виджета.

<div> <!-- do not add tag <html> , <head> , <body> but must have <div> first --> 
    <button data-dojo-type="dijit.form.Button" type="button" data-dojo-attach-point="_innerWidget" data-dojo-attach-event="ondijitclick:_onClick">Yo!</button> 
</div> 

dojoAttachPoint полезно, так что вы можете получить ссылку на этот виджет откладывая в реализации вашего виджета без получения ссылки через dijit.byId («»).

Надеюсь, это поможет.

Смежные вопросы