2012-02-25 22 views
8

'un pozisyonunu sabitleyin Herhangi bir dojox.layout.FloatingPane (özel bir dijit olarak) var. Benim sorunum, kullanıcının FloatingPane'i tamamen kendi kabının dışına sürükleyip potansiyel olarak geri getirememesidir. FloatingPane'i her zaman görünür olmaya zorlamanın kolay bir yolu var mı? FloatingPane ait DnD işlevselliği bölmesi en içinde instantialized dojo.dnd.Moveable sınıfında üzerinden gerçekleşmektedir); http://jsfiddle.net/phusick/3vTXW/Dojo FloatingPane

Ve şimdi bazı açıklama: Herşeyden

dojo.provide("ne.trim.dijits.SearchDialog"); 

dojo.require("dijit._Widget"); 
dojo.require("dijit._Templated"); 
dojo.require("dojox.layout.FloatingPane"); 

dojo.declare("ne.trim.dijits.SearchDialog", [dijit._Widget, dijit._Templated], { 

templateString: dojo.cache("ne.trim.dijits", "templates/SearchDialog.html"), 
initialised:false, 
floatingPane: null, 

postCreate: function() { 
    this.init(); 
}, 

init: function() { 
    console.debug("SearchDialog.init()", "start"); 
    if (this.initialised === false) { 
     this.createSearchDialog(); 
    } 
    //ne.trim.AppGlobals.searchDialog = this; 
    console.debug("SearchDialog.init()", "end");   
}, 

createSearchDialog: function() { 
    var node = dojo.byId('searchbox'); 
    floatingPane = new dojox.layout.FloatingPane({ 
     title: "A floating pane", 
     resizable: true, dockable: true, constrainToContainer: true, 
     style: "position:absolute;top:100;right:100;width:400px;height:300px;z-index:100", 
    }, node); 

    this.initialised=true; 

    floatingPane.startup(); 
} 

}); 

cevap

11

Birincisi, jsFiddle çalışan örneğe bakın: Burada

kod bu postCreate yöntemi. DOM düğümü
  • dojo.dnd.boxConstrainedMoveable ile sınırlamak için - - koordinatları ile sınırlamak için

    • dojo.dnd.parentConstainedMoveable: {l: 10, T: 10 bu yerine Montajsız birini kullanmalıdır FloatingPane hareketini sınırlamak için w,: 100, H: 100}
    • dojo.dnd.constrainedMoveable - daha fazla bilgi için sağlanan bir fonksiyonu

    hesaplanan koordinatları ile sınırlamak için yukarıda sözü edilen jsFiddle bkz. Ben sadece aynı üzerine bu üç moveables birini örneğini,

    belgelerine göre bunu kaldırmak Moveable örneğinde destroy() aramalısınız ancak FloatingPane 'ın orijinal Moveable herhangi bir nesne özelliği atanmamış olarak bunu yok etmez bir alt sınıfta DOM düğümü:

    var ConstrainedFloatingPane = dojo.declare(dojox.layout.FloatingPane, { 
    
        postCreate: function() { 
         this.inherited(arguments); 
         this.moveable = new dojo.dnd.move.constrainedMoveable(this.domNode, { 
          handle: this.focusNode, 
          constraints: function() { 
           return dojo.coords(dojo.body()); 
          } 
         }); 
        } 
    
    }); 
    

    Şimdi dojox.layout.FloatingPane yerine ConstainedFloatingPane kullanabilirsiniz: bir phusick büyük bir tepki var

    var floatingPane = new ConstrainedFloatingPane({ 
        title: "A Constrained Floating Pane", 
        resizable: true 
    }, searchboxNode); 
    
  • +0

    d sadece ihtiyacım olan şey. Çok teşekkürler! – AppsWithMaps

    +0

    Harika bir soru da! Sonunda, Dojo'nun DnD'sine daha çok inmememi sağladı. – phusick

    +0

    Bunun ile ilgili bir sorun var çünkü ConstrainedFloatingPane'inizi gerçek kısıtlanmış alandan daha büyük olacak şekilde yeniden boyutlandırabilirsiniz. Bunu düzeltmenin bir yolu var mı? – L4zl0w

    İlgili konular