使用“之前”选项将项目添加到道场商店
Posted
技术标签:
【中文标题】使用“之前”选项将项目添加到道场商店【英文标题】:Adding an item to a dojo store using 'before' option 【发布时间】:2014-06-19 16:15:34 【问题描述】:我有一个 dijit/Tree 连接到一个 dijit/Tree/ObjectStoreModel,它又连接到一个 dojo/store/Memory 包装在 dojo/store/Observable 中 - 基本上按照 dijit/tree 文档中的示例.
它工作得很好:我用一些对象预加载了商店,并且可以使用 store.add(item) 添加其他对象。数据是分层的,也可以通过为添加到商店的每个项目设置 parent 属性来工作。
但是,我希望能够指定在父子项目中应如何排序。例如如果我有一个 id 为“parent_1”的项目并且我添加了两个项目(比如“item_A”、“item_B”),并且父项都设置为“parent_1”,那么我最终会得到:
父_1
item_A
item_B
但是,我希望将 item_B 放在 item_A 上方。
store.add 支持第二个参数:属性对象,其中一个是'before'。我的理解是,当您将“之前”设置为商店中的另一个对象时,它应该放在它之前。所以,当我添加 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 总是简单地附加在末尾。有谁知道如何使这项工作?谢谢!
【问题讨论】:
你是如何处理这个问题的?我正在尝试做完全相同的事情。你能分享你的经验吗? 很遗憾地报告我没有找到办法。 好的。谢谢。在这张票下提交的补丁似乎也不起作用 - bugs.dojotoolkit.org/ticket/15660。 【参考方案1】:查看source,dojo/store/Memory 似乎不支持before
PutDirective。
如果你想要这个功能,我怀疑你必须提交一个 Dojo 功能请求,或者补丁/增强 dojo/store/Memory 来提供你需要的功能。
【讨论】:
感谢您的回答,特别是链接到源代码。我以前从没想过要阅读源代码(我一直在使用 dojo 网站上的 docs / api 参考以及大量的试验和错误)但这看起来可能非常有用!以上是关于使用“之前”选项将项目添加到道场商店的主要内容,如果未能解决你的问题,请参考以下文章