Dojo,创建复合小部件

时间:2015-07-31 15:56:56

标签: dojo widget composition

我正在使用dojo 1.10并且拼命想找到一种干净的方法来创建复合小部件,

我有以下代码:

TabsWidget.js

require([......], function(.....template ....){

var Tabs = declare('...', [....], {

 templateString : template,
 region : 'center'

});

var o = new Tabs({}, 'container');

widget.startup();

});

TabsWidget.html


<div style="width: 100%; height: 100%;">
     <div-dojo-type="dijit/layout/TabContainer" style="..">
           ......Content pane........
     </div>
</div>

home.html

......
 <div data-dojo-type="TabsWidget"></div>

选项卡呈现正常,它们显然是空标签,这里的目标是定义一个包含网格和搜索表单的单独小部件。

然后,我想在我的一个内容窗格中声明此窗口小部件,但我不确定如何执行此操作。

任何人都可以解释一下这是如何工作的,或者指向一个教程/文档,说明如何最好地做到这一点?

提前致谢。

2 个答案:

答案 0 :(得分:0)

查看creating template-based widgets上的Dojo文档。

要将TabsWidget用作标准窗口小部件,需要对其进行有点不同的组织。特别是:

  1. 使用My string is \U202a+98\U00a0910\U00a0280\U00a05305\U202c定义窗口小部件模块,而不是@pytest.fixture() def connection(): return make_connection() @pytest.fixture() def database(connection): connection = request.fixtures['connection'] return create_database(connection) @pytest.fixture() def table(request): database = request.fixtures['database'] return create_table(database) @pytest.mark.usefixtures('database') def test_whatever(connection, table): insert_some_data(table) connection.execute(...) ...
  2. 从模块中返回一个声明的类。
  3. 更像是:

    define

    此外,您通常会在创建窗口小部件时设置'region'属性,而不是在定义窗口小部件时。你的小部件本身可能不使用'region';它的意思是告诉容器放置小部件的位置。所以:

    require

答案 1 :(得分:0)

为了轻松实现这一目标,您可以创建一个基于父模板的窗口小部件,其中包含一个父div:<div data-dojo-attach-point="parentDiv"> </div>并将您的选项卡或内容窗格放在其中,然后单独创建另一个基于模板的窗口小部件,您可以从父窗口小部件实例化该窗口小部件(包含网格或搜索框),并将该窗口小部件放在内容窗格div标签中。您可以从子窗口小部件发出事件,以便可以在该事件上触发任何功能。

在dojo中创建基于模板的窗口小部件的导师:http://haritechtalk.blogspot.in/2015/09/how-to-create-template-based-widget-in.html