このパラメータでは、渡されたオブジェクトの代わりにファンクションのコンストラクタが必要です。おそらく、次のように動作します:
dndController: function(arg, params){
return new dijit.tree.dndSource(
arg, // don't mess up with the first parameter
dojo.mixin({}, params, {copyOnly:true}))
//create a copy of the params object, but set copyOnly to true
}
いくつかの説明:
私は実際に木にドラッグアンドドロップについては何も知りません。私がしたのは、dndControllerがどこで使われているかを知るためにTreeソースコード(dijit/Tree.jsなどで)を見ていただけでした。その点から、私はこれら2つのパラメータ(またはそのような関数へのパスを表す文字列)を受け取ることができる関数であるはずであることが分かりました。実際に使用されているdijit.tree.dndSource関数は、私があなたの質問文からコピーしたもので、うまくいくと思っています。
dojo.mixin関数は、第2、第3、...引数のすべてのオブジェクトを第1引数に混在させます。新しい、空のオブジェクトを「受信」オブジェクトとして使用することで、オリジナルのparamsオブジェクトを変更せずにcopyOnlyを設定し、paramsの浅いコピーを作成するきっかけができます。
@missingnoThanks!それは完璧に働いた。私はDojo/Javascriptの新機能を使用しているので、もっと説明していただければ幸いです。私は使用されているコンポーネント(treeとdndSource上のdojo.mixinとsource)を調べようとしました。具体的には、これは私が得られない点です: "arg"と "params"とは何ですか?また、最初のパラメータが空であるため、dojo.mixinは動作しています。ありがとう、それは素晴らしい答えでした! – hbhakhra
答えを少し更新しました。 – hugomg
それは事を明確にするのに役立ちます。私は特に思考プロセスを説明したことが好きです(もし私が2番目の議決権行使をすることができれば)。しかし、私はまだ "arg"と "params"の価値とそこから渡された値について何か混乱しています。これは基本的なJavaScriptの理解の問題かもしれませんが、わかりません。 – hbhakhra