如何移除 DOJO 数据存储添加到我提取的项目中的所有额外字段
How do I remove all the extra fields that DOJO datastore adds to my fetched items?
从 DOJO 数据存储中获取项目时,DOJO 会向其添加大量额外字段。它还改变了数据的结构方式。
我知道我可以手动将每个项目重建为其初始形式(这需要我在每次更改 REST 对象时更新两个 JS 代码(,但肯定必须有更好的方法。
也许是一个store.detach(项目(或类似的东西?
dojo.data
API 正在逐步淘汰,部分原因是额外的字段。 可以考虑使用新的dojo.store
API。 存储 API 不会添加额外的字段。
我写了一个函数,可以做你想做的事情。它如下。 需要注意的一点是,我的函数将子对象转换为{ _reference: 'id' }
表示法。 您可能需要不同的行为。
Util._detachItem = function(item) {
var fnIncludeProperty = function(key) {
return key !== '_0'
&& key !== '_RI'
&& key !== '_RRM'
&& key !== '_S'
&& key !== '__type'
};
var store = item._S;
var fnCreateItemReference = function(itm) {
if (store.isItem(itm)) {
return { _reference: itm.id[0] };
}
return itm;
};
var fnProcessItem = function(itm) {
var newItm = {};
for(var k in itm) {
if(fnIncludeProperty(k)) {
if (dojo.isArray(itm[k])) {
// TODO this could be a problem with arrays with a single item
if (itm[k].length == 1) {
newItm[k] = fnCreateItemReference(itm[k][0]);
} else {
var valArr = [];
dojo.forEach(itm[k], function(arrItm) {
valArr.push(fnCreateItemReference(arrItm));
});
newItm[k] = valArr;
}
} else {
newItm[k] = fnCreateItemReference(itm[k]);
}
}
}
return newItm;
};
return fnProcessItem(item);
};
注意:这个函数是从我最初写的修改而来的,我没有测试上面的代码。
相关文章:
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 而循环只设置php中输入字段中的第一个值
- 在输入字段中将最小金额设置为
- 范围$手表项目doens'不适用于javascript对象的字段
- 提交带有已使用jQuery移动的列表框项目的隐藏字段
- 如何在选择项目时使用 ajax 将数据提取到输入字段中
- Jquery- 动态添加字段 - 防止删除最后一个项目
- 使用 lodash 按多个字段对数组中的项目进行排序
- 如何移除 DOJO 数据存储添加到我提取的项目中的所有额外字段
- 使用javascript修改select字段中的项目顺序
- 显示按字段分组的项目
- Jquery UI自动完成不同的渲染项目结果相同的字段
- 这个项目缺少什么?即使字段为空,表单也会被接受
- 如何使用jsGrid在字段中获得项目的下拉列表
- 如何使用带有输入字段的表单将项目推送到控制器数组中,该表单将显示在视图中
- 如何将所选项目存储在“;选择“;字段
- 动态创建的getmdl选择字段's的下拉窗口没有'单击项目时不要关闭
- 套件脚本 从多选字段加载项目记录
- 需要帮助,以显示不同的字段与帮助项目符号在HTML表单
- JQuery引导模式窗口以某种方式重载/清除Ruby on Rails项目中的父字段