在自定义小部件中添加dojo小部件

时间:2012-02-16 06:39:47

标签: javascript dojo

我正在制作一个小的dojo小部件,基本上扩展了dailog小部件,并希望添加简单的小部件,如文本输入一些标签等。我该如何解决这个问题?我正在学习教程,

Dojo how to make a widget

请帮帮我。

由于

2 个答案:

答案 0 :(得分: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

调用widget的方法

您必须在调用dojo库

之前添加它
<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>

答案 1 :(得分: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:true”部分,它告诉解析器期望窗口小部件中的窗口小部件。

然后,您只需为要包含在窗口小部件模板中的特定窗口小部件添加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('')获取引用。

希望这有帮助。