1

您可以指定/更改 data-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。

4

1 回答 1

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>

所以现在跨度附加点与父级分离。您可以从为跨度创建的小部件中直接引用“spanNode”。

声明式地,在包含跨度的 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>
于 2016-11-16T15:26:17.300 回答