我正在尝试使用dojo框架将新条目推送到objectstore。 层次结构如下所示:
Job Type job1 job2 job3 job4
现在,我想插入一个新作业job6
并使用javascript将其放在第一个作业中。我根据dojo框架使用before选项。但是,我无法这样做。以下是代码段:
objectStore.put({
id: unid,
name: unid.replace(typ,''),
type:typ,
before: "job1",
project:"jobs",
parent:typ
});
答案 0 :(得分:0)
更新: before
在API规范中列为PutDirectives
的成员,但实际上并未在put() code中实现(我已检查过内存)存储和DataStore)。新项目简单地附加到最后。
有两种解决方法:
sortInfo
属性)。这取决于您如何使用商店。这可能是最好的选择,因为商店不应该有任何结构,而不是一袋id。 before
选项可能只是以前版本的Dojo中的残余。Memory.setData()
修改商店。这假定使用Memory存储。 (见下面的代码)before
选项 使用手动数组操作和Memory.setData()
修改商店:
require(["dojo/store/Memory"], function(Memory) {
// Initialize
var data = [
{id: "job1", name: "Job 1"},
{id: "job2", name: "Job 2"},
];
objectStore = new Memory({data: data});
console.log('BEFORE insert:');
console.log(objectStore.data);
// Get data from store as array
var tmpData = objectStore.data;
// Modify array: insert new item at beginning
var newObject = {id: "job3", name: "New Job"};
tmpData.unshift(newObject);
// Set data of objectStore to newly modified array
objectStore.setData(tmpData);
console.log('AFTER insert:');
console.log(objectStore.data);
});
<script src="http://ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script>