Dojo更改数据dojo附加点的范围

时间:2016-11-10 18:56:17

标签: dojo javascript-databinding

您是否可以指定/更改数据-dojo-attach-point的范围,而不是当前窗口小部件?

例如。我有一个名为parent的模板化小部件。在该模板中,我有另一个名为child1的小部件。嵌套在child1中,我有一些小部件。我想将这些嵌套的小部件绑定到child1而不是父级。

编辑:

<div data-dojo-type="someContainer" data-dojo-attach-point="parent">
    <div data-dojo-type="somePane" data-dojo-attach-point="child1">
        <span data-dojo-attach-point="(I want to be bound to somePane)"></span>
    </div>
</div>

我想将“span”绑定到somePane,而不必通过someContainer。

1 个答案:

答案 0 :(得分:0)

将范围分隔到它自己的小部件中,您可以像这样将它们添加到父级。

包含内容窗格的父模板

<div style="width: 100%; height: 100%;">
     <div data-dojo-type="dijit/layout/LayoutContainer" style="width: 100%; height: 100%" data-dojo-attach-point="mainNode">
        <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'top'" >
            <div >
                <!--some content-->
            </div>
        </div>

        <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'" id="center">
            <div data-dojo-attach-point="centerNode"></div>
        </div>

    </div>

</div>

在父窗口小部件的postCreate方法中,创建子窗口的新实例并将其附加到父窗口

                                                                                                      
define([
    "dojo/_base/declare",
    "dijit/_WidgetBase",
    "dijit/_TemplatedMixin",
    "dijit/_WidgetsInTemplateMixin",

    "dojo/text!./templates/Parent.html",

    "somePath/childWidget",

    'dojo/domReady!'
], function (
    declare,
    _WidgetBase,
    _TemplatedMixin,
     _WidgetsInTemplateMixin,

    parentTemplate,

    ChildWidget

) {

    return declare([_WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin], {

        templateString: parentTemplate,


        postCreate: function () {
            this.inherited(arguments);

            var myChild = new ChildWidget();
            myChild.placeAt(this.centerNode);
            myChild.startup();

        }


    });
});

然后因为跨度位于它自己的小部件内,你可能有一个看起来像这样的模板

<div>
    <span data-dojo-attach-point="spanNode"></span>
</div>

现在跨度附加点与父级分离。您可以直接参考&#39; spanNode&#39;从您为跨度创建的小部件中。

以声明, 在你的childWidget中包含你可以给出的范围给它一个像这样的类名

return declare("childWidget", [_WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin], { ...

在父模板中,而不是使用附加点来附加小部件,请使用data-dojo-type,如下所示

    <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'" id="center">
        <div data-dojo-type="childWidget"><!--child widget will get attached here--></div>
    </div>