2010-03-18 3 views
4

Dojo의 Dijit Dialog를 HTML 요소 중 하나에 상대적으로 배치하려고합니다. 그것은 가능한가? 예인 경우. 방법?Dojo Dijit 대화 상대 위치. 그것은 가능한가?

현재 뷰포트 중간에 항상 대화 상자가 표시됩니다.

아무도 내가이 문제에 관해 도움을 줄 수 있습니까?

감사합니다.

amar4kintu는

답변

2

나는

.. 도장을 사용 dijit.dialog의 기본 절대 위치를 조정하여 나는 희망

dijit.byId('dialog').show(); 

dojo.style('dialog','background-color','#AAAAAA'); 

var co = dojo.coords('period'); // element below which I want to display dialog 

dojo.style('md1','top',(co.y + 25)+'px'); 
dojo.style('md1','left', co.x+'px'); 

이 의지 .. 내가 원하는 걸에 대화의 절대 위치를 재조정하는 코드를 다음 사용했다고했다 도와주세요 ..

고마워요.

amar4kintu

1
var dialog = new dijit.Dialog({ 
     title: myTitle, 
     content: myDialogContent, 
     style: "width: 300px;", 
     onShow: function() { dojo.style(this.containerNode.parentNode,'visibility','hidden'); }, 
     onLoad: function() { dojo.style(this.containerNode.parentNode,{top:'100px', visibility:'visible'}); } 

    }); 

대신 상단 : '100 픽셀'당신이 최고도 사용할 수 있습니다 : '20 %의 '가 아니라 잘 테스트합니다. 내 도장은 1.7.1입니다.

4

나는이 할 수있는 또 다른 방법 (잘되지 나는 개인 메소드를 오버라이드 (override)하지만 나에게 내가 원하는 유연성을 제공하기 때문에) :

var d = new Dialog({ 
    title:"Your Dialog", 
    _position:function(){ 
     if(this.refNode){ 
      p = Geo.position(this.refNode); 
      Style.set(this.domNode,{left:p.x + "px", top:p.y + "px"}); 
     } 
    }, 

    showAround:function(node){ 
     this.refNode = node; 
     this.show(); 
    } 
}); 
d.showAround(dojo.byId("someNode")); 
이 예는 스타일과 "로"도장/DOM 스타일 "을 사용

dojo/dom-geometry "를 Geo로 사용합니다.