Добавление предмета в магазин додзё с использованием опции «до»

У меня есть dijit/Tree, подключенный к dijit/Tree/ObjectStoreModel, который, в свою очередь, подключен к dojo/store/Memory, заключенному в dojo/store/Observable — в основном, как в примере в документации dijit/tree.

В основном это работает нормально: я предварительно загружаю в магазин некоторые объекты и могу добавлять другие объекты с помощью store.add(item). Данные являются иерархическими, и это также работает, устанавливая родительское свойство для каждого элемента, добавленного в хранилище.

Однако я хочу иметь возможность указать, как следует упорядочивать родительские подэлементы. например если у меня есть элемент с идентификатором parent_1, и я добавляю два элемента (скажем, item_A, item_B), оба с родительским параметром parent_1, тогда я получаю:

родитель_1

  • пункт_А

  • элемент_B

Однако я хочу, чтобы item_B располагался выше item_A.

store.add поддерживает второй параметр: объект свойств, одно из которых — «до». Насколько я понимаю, когда вы устанавливаете «до» для другого объекта в магазине, он должен быть помещен перед ним. поэтому, когда я добавляю item_B, я использую:

var item_A = store.get("item_A");
var item_B = { id: "item_B", parent: "parent_1", ... };
store.add(item_B, { before: item_A });

Однако это не работает. item_B всегда просто добавляется в конец. Кто-нибудь знает, как это сделать? Спасибо!


person Kate    schedule 19.06.2014    source источник
comment
Как вы справились с этим? Я пытаюсь сделать то же самое. Можете ли вы поделиться своим опытом?   -  person ksrini    schedule 12.10.2015
comment
Мне жаль сообщать, что я не нашел способ сделать это.   -  person Kate    schedule 12.10.2015
comment
В ПОРЯДКЕ. Спасибо. Патчи, отправленные по этому тикету, похоже, тоже не работают - bugs.dojotoolkit.org/ticket/15660< /а>.   -  person ksrini    schedule 13.10.2015


Ответы (1)


Глядя на исходный код, не похоже, что dojo /store/Memory поддерживает before PutDirective.

Если вам нужна эта функция, я подозреваю, что вам придется отправить запрос на функцию Dojo или исправить/дополнить dojo/store/Memory, чтобы обеспечить требуемую функцию.

person Nick Maynard    schedule 19.06.2014
comment
Спасибо за ответ и особенно за ссылку на источник. Раньше я никогда не думал читать исходный код (я только что использовал справочник docs/api на сайте додзё вместе с огромным количеством проб и ошибок), но похоже, что это может быть очень полезно! - person Kate; 20.06.2014