2016-11-10 4 views
1

Можете ли вы указать/изменить область действия-dojo-attach-point на нечто иное, чем текущий виджет?Доджо изменение объема данных dojo attach point

например. У меня есть шаблонный виджет, называемый родительским. В этом шаблоне у меня есть еще один виджет с именем child1. Вложенный в child1, у меня есть некоторые виджеты. Я хочу привязать эти вложенные виджеты к child1, а не к родительскому.

Edit:

<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> 

Я хотел бы, чтобы связать "пролет" в somePane без необходимости проходить через someContainer.

+0

Вы размещаете все их в одном шаблоне - родительском? И что вы подразумеваете под привязкой вложенных виджетов к child1, а не к родительскому? – erotavlas

+0

Да, все в одном шаблоне. По привязке данных к child1 я имею в виду data-dojo-attach-point для child1, а не родительский, который по умолчанию – user7142947

+0

Насколько я знаю, точки прикрепления шаблона всегда относятся к связанным с ним виджетам, а не к дочерним виджетам, которые вы приложите к нему. Таким образом, от ребенка вы должны получить ссылку на родительский виджет, чтобы получить доступ к точкам присоединения, определенным в родительском шаблоне. Но что вы пытаетесь сделать? Вы должны предоставить более подробную информацию в своем посте, возможно, есть лучший дизайн, который может достичь той же цели. – erotavlas

ответ

0

Отделите span в своем собственном виджетах, и вы можете добавить их к родителям, как это.

шаблона Родителя, который содержит панели контента

<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> 

В методе поста своего родительского виджета создать новый экземпляр ребенка и прикрепить его к родителю

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], { ... 

И в родительском шаблоне вместо того, чтобы использовать прикрепить точку, чтобы прикрепить использование виджета данных-додзё Тип типа

<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> 
+0

Это работает, но я искал декларативное решение, так как я хочу дать другим людям возможность добавлять childWidget, в вашем примере, в любом месте внутри «centerNode». Может быть первым элементом, может быть последним, может быть вложен 2 уровня вниз и т. Д. – user7142947

+0

@ user7142947 Кто другие? Пользователи или программисты? Что вы пытаетесь выполнить с помощью этой части приложения? Если вы предоставите более подробную информацию о том, как это работает с точки зрения пользователя, это может привести к лучшим ответам. – erotavlas

+0

@ user7142947 добавлен декларативный путь до конца сообщения – erotavlas

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