0

dnd.source以前に作成した受け入れを変更する関数を呼び出す必要があります。既存のものを変更する方法についてのアイデアdojo.dnd.sourceは素晴らしいでしょう。私が作成したコード:

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

私の英語でごめんなさい、私はまだ学んでいます。再度、感謝します。

4

3 に答える 3

2

これをいじってみたところ、道場のマニュアルが示唆するように、「accept」プロパティが配列ではないように見えることがわかりました。デフォルトで値1に設定された「テキスト」と呼ばれる属性を持つ、クロムのデバッガーである種のオブジェクト(配列以外)として表示されます。無効にするようにアクセスelement.accept = "";することはできますが、その後、同じ方法を使用して再度有効にすることelement.accept = ['text'];element.accept.textできません。

私のアプリケーションでは、テーブル内の各 td に 1 つのアイテムを配置できるようにする必要がありました。次の関数を使用してこれを行い、ここにリストされているもののバリアントを使用してテーブル内のアイテムの順序を保持しました。言及する価値があると思いました。

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
于 2011-11-16T03:41:15.910 に答える
0

問題を解決する別の方法を見つけましたが、あまり良くありません。divを含むを単純に削除し、別の承認dnd.sourceで新しい を作成しました。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 をセットアップする方法を知っていることを願っています

于 2010-01-20T18:34:33.910 に答える