2011-01-04 32 views
5

Theo mặc định, một thùng chứa dojo.dnd.Source cho phép bạn giữ Ctrl để sao chép/sao chép một mục đã kéo thay vì chỉ di chuyển nó.Tắt sao chép trong dojo.dnd

Tôi biết bạn có thể đặt số ít = true để dừng nhiều mục được kéo nhưng làm cách nào để dừng sao chép? Các mục trùng lặp không có ý nghĩa gì trong ngữ cảnh của các mục của tôi (tôi đang tạo danh sách có thể kéo để sắp xếp lại các trang trên menu trang web).

Cảm ơn

Trả lời

6

tôi không chắc chắn nếu có một cách đẹp hơn, nhưng tôi đã luôn luôn thực hiện điều này bằng cách clobbering phương pháp copyState trên dụ Nguồn để luôn trở false.

Nếu bạn có một số Nguồn trên trang, bạn cũng có thể chọn dojo.declare một lớp con với phương thức được ghi đè hoặc tự động ghi đè phương thức của mình trong tất cả các trường hợp.

+1

Ngẫu nhiên đây là phương pháp chính thức được phê duyệt. ;-) –

2

Nhờ Ken Franquiero, tôi đã giải quyết được vấn đề này. Đối với những người khác trong cùng một thuyền, đây là mã của tôi:

/** 
* Extend dojo.dnd.Source to prevent copying 
*/ 

dojo.require('dojo.dnd.Source'); 
dojo.addOnLoad(function() { 

    dojo.declare 
    (
     'EditPosition', 
     dojo.dnd.Source, 
     { 
      copyState: function(keyPressed, self) 
      { 
       return false; 
      } 
     } 
    ); 

    oEditPosition = new EditPosition 
    ( 
     'position_container', 
     { 
      withHandles: 'true' 
     } 
    ); 

}); 

HTML:

<div id="position_container"> 
    <div class="dojoDndItem"> 
     <div class="dojoDndHandle drag_icon drag_handle"></div> <strong>Short Paragraphs</strong> 
    </div> 
    <div class="dojoDndItem"> 
     <div class="drag_icon fixed_handle"></div> About Us 
    </div> 
    <div class="dojoDndItem"> 
     <div class="drag_icon fixed_handle"></div> Team Members 
    </div> 
</div> 
6

Hoặc thứ hai tùy chọn

dojo.addOnLoad(function(){ 

    //Disable the key events Ctrl and Shift 
    dojo.extend(dojo.dnd.Source, { copyState: function(keyPressed, self){ 
     return false; }} 
    ); 

    //Create the dnd source object for data point column bar 
    columnBar = new dojo.dnd.Source("viewColumnBar",{ singular: true }); 

}); 
Các vấn đề liên quan