2010-01-19 3 views
0

이전에 생성 한 dnd.source 수락을 변경하는 함수를 호출해야합니다. 현존하는 dojo.dnd.source을 어떻게 바꾸는 지에 대한 아이디어는 유용 할 것입니다. 내가 생성하는 데 사용한 코드 :dojo.dnd.source의 수락을 얻거나 설정하는 방법

var catalog = new dojo.dnd.Source('div_catalog', { accept: ['inStock'] }); 

죄송합니다. 제 영어는 아직도 배우고 있습니다. 다시 한번 감사드립니다.

답변

0

문제를 해결할 수있는 대안을 찾았지만 좋지 않습니다. 나는 dnd.source을 포함하는 div을 삭제하고 다른 수락으로 새로운 dnd.source을 만들었습니다.

var element = dojo.byId(user_id);<br /> 
var element_father = element.parentNode;<br /> 
element_father.removeChild(element);<br /> 
var div = document.createElement("div");<br /> 
div.setAttribute('id',element.id);<br /> 
element_father.appendChild(div);<br />   
var catalog = new dojo.dnd.Source(element.id, {accept: ['outStock']}); 

나는 누군가가 내가이 주변에 해왔다의 설정 방법 존재 dnd.source

+0

catalog.accept = [ 'otherValue']을 시도 했습니까? 나는 단지 ... 추측을 확인하지 않았다. – Philippe

2

을 알고 있다는 것을 바라며, 나는이 속성은 아닐 것으로 보인다 "동의 함"을 발견 : 코드는 내가 사용 도장 매뉴얼에서 알 수 있듯이 배열. 기본적으로 "text"라는 속성이 1로 설정된 크롬 디버거에 Object (Array가 아닌)의 일종을 표시합니다. 그것을 작동시키지 않으려면 element.accept = "";으로 액세스하지만 그 이후에는 다시 동일한 메소드를 사용하여 다시 활성화하고 element.accept = ['text'];과 같은 것을 시도 할 것입니다. 나는 또한 element.accept.text에 의해 액세스를 시도했는데 한 번 객체가 인스턴스화 된 것처럼 보이지 않았습니다. .

내 응용 프로그램의 경우 테이블의 각 td에 하나의 항목이 있어야하며이 기능을 사용하여 나열된 항목의 변형을 사용하여 테이블의 항목 순서를 유지했습니다 이리. 나는 언급 할만한 가치가 있다고 생각했다.

function changeAccept(source) 
{ 
    var element = document.getElementById(source.node.id); 
    console.log("element:"+element); 
    var element_father = element.parentNode; 
    var td = document.createElement("td"); 
    td.setAttribute('id',element.id); 
    element_father.replaceChild(td,element); 

    var newsource = new dojo.dnd.Source(element.id, {accept: ['text']}); 

    dojo.connect(newsource, "onDrop", function(source, nodes, copy) { 
     console.log("Dropped", newsource, source, nodes, copy); 
     newsource.accept = ""; 
     changeAccept(source); 
    }); 

    return newsource; 
} 

var priorelement = new dojo.dnd.Source(element.id, {accept: ''}); //disabled 
changeAccept(priorelement); //enabled and in same position in table 
1

나는 똑같은 문제에 직면했고 해결책을 찾았습니다. 실제로 매우 쉽습니다.

var source = new dojo.dnd.Source ("divId", {accept : []}); // 우리도 할 수 있습니다 dojo.dnd.AutoSource 사용

이제 생성 된 소스는 허용되지 않습니다. 승인을 변경하려면 우리는 필드 같은 동의의에 속성을 추가 할 수 있습니다

source.accept["acceptType"] = 1; 

그리고 같은 그것을 삭제 :

delete source.accept["acceptType"]; 

내가이 사람을 도움이되기를 바랍니다.

관련 문제