DOJO实例化和使用源之间的区别

时间:2011-09-12 23:27:07

标签: javascript drag-and-drop dojo tree

我是DOJO的新手并试图找出看似两件事的这两种用法之间的区别。

dndController: new dijit.tree.dndSource("dijit.tree.dndSource",{copyOnly:true})

dndController: "dijit.tree.dndSource"

第二个可以工作,但是当我使用第一个时,它在加载我的树时给了我一个错误。它说类型节点是未定义的。我想使用第一个的原因是因为我想将copyOnly设置为true。

任何答案都赞赏它。

1 个答案:

答案 0 :(得分:3)

该参数需要构造函数 function 而不是您传递的对象。也许以下方法可行:

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
}

一些解释:

我实际上对树上的拖放一无所知。我所做的就是查看Tree源代码(它在dijit / Tree.js或类似的东西)来找出dndController的使用位置。从那时起,我可以发现它应该是一个可以接收这两个参数的函数(或者一个表示这种函数路径的字符串......)。我刚从你的问题陈述中复制使用的实际dijit.tree.dndSource函数,希望它可以工作。

dojo.mixin函数将第2,第3,...参数中的所有对象混合到第一个参数中。通过使用一个新的空对象作为“接收”对象,我们有一个简洁的方法来制作params的浅拷贝,在不修改原始params对象的情况下设置copyOnly。

相关问题