DOJO разница между созданием экземпляра и использованием источника - PullRequest
1 голос
/ 13 сентября 2011

Я новичок в DOJO и пытаюсь выяснить разницу между этими двумя видами использования, казалось бы, двух вещей.

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

и

dndController: "dijit.tree.dndSource"

Второй работает, но когда я использую первый, он выдает ошибку при загрузке моего дерева. Он говорит, что тип узла не определен. Причина, по которой я хочу использовать первый, заключается в том, что я хочу установить для copyOnly значение true.

Любые ответы это оценили.

1 Ответ

3 голосов
/ 13 сентября 2011

Этот параметр ожидает конструктор 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, установив copyOnly без изменения исходного объекта params.

...