2016-11-10 4 views
1

데이터 위 결합점의 범위를 현재 위젯 이외의 것으로 지정하거나 변경할 수 있습니까?Dojo 데이터 범위 변경 부속 점

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

내가 someContainer을 통해 갈 필요없이 somePane에 "범위를"결합하고 싶습니다.

+0

모두 하나의 템플릿에 배치합니까? 부모입니까? 중첩 된 위젯을 부모가 아닌 자식 1에 바인딩하면 무엇을 의미합니까? – erotavlas

+0

예, 모든 것이 단일 템플릿에 있습니다. 데이터에 의해 child1에 바인딩 나는 데이터 dojo-attach-point를 가리킨다. 기본값은 부모 인 child1이다. – user7142947

+0

내가 아는 한, 템플릿의 첨부 지점은 항상 연결된 위젯이 아니라 자식 위젯이 아니다. 그것에 붙여라. 따라서 자식으로부터 부모 템플릿에 정의 된 부착 점에 액세스하려면 부모 위젯에 대한 참조를 얻어야합니다. 그러나 무엇을하려고합니까? 게시물에 더 많은 세부 정보를 제공해야합니다. 동일한 목표를 달성 할 수있는 더 나은 디자인이있을 수도 있습니다. – erotavlas

답변

0

스팬을 자신의 위젯으로 분리하면 이러한 부모에 추가 할 수 있습니다. 콘텐츠 창

부모 위젯의 postCreate 방법에
<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> 

아이의 새로운 인스턴스를 생성하고 부모

에 첨부를 포함

부모 템플릿 스팬이 자신의 위젯 내부에 있기 때문에 그래서 지금 스팬이

<div> 
    <span data-dojo-attach-point="spanNode"></span> 
</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(); 

     } 


    }); 
}); 

그런 다음 템플릿을 가질 수 있습니다. 스팬에 대해 작성한 위젯 내에서 'spanNode'를 직접 참조 할 수 있습니다. 당신이이

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

추천하고 대신 위젯 사용 데이터 도장을 연결하는 지점을 연결 사용의 부모 템플릿 클래스 이름을 줄 수있는 범위를 포함

선언적으로, 당신의 childWidget에서 이 같은 형식은

<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

이 방법이 효과적이지만 다른 사람들에게 "centerNode"내부의 다른 위치에 childWidget을 추가 할 수있는 권한을 부여하기 때문에 선언적 솔루션을 찾고있었습니다. 첫 번째 요소가 될 수도 있고, 마지막 요소 일 수도 있고, 2 단계 아래로 중첩 될 수도 있습니다. – user7142947

+0

@ user7142947 다른 사람들은 누구입니까? 사용자 또는 프로그래머? 이 앱의 특정 부분으로 무엇을 달성하려고합니까? 이것이 사용자 관점에서 어떻게 작동하는지 더 자세하게 설명하면 더 나은 응답을 유도 할 수 있습니다. – erotavlas

+0

@ user7142947은 게시물의 끝 부분에 선언적 방법을 추가했습니다. – erotavlas