我对Dojo了解不多,但可能如下:
我认为它有一个用于访问其数据存储区的getter / setter,是否可以覆盖此代码。
例如:
在道场商店,我有'姓名:@Joe'
是否可以检查获取:
的get()
if name.firstChar = '@' then just
return 'Joe'
和
set(var)
if name.firstChar = '@' then set to @+var
这种事情有可能吗?或者我需要一个包装API吗?
答案 0 :(得分:1)
您可以从http://docs.dojocampus.org/dojo/data/api/Read
获取最佳文档首先,要从商店获取数据,您必须使用
getValue(item, "key")
我相信你可以通过以下方式解决问题。它假设您正在使用ItemFileReadStore,您可以使用另一个,只需替换它。
dojo.require("dojo.data.ItemFileReadStore");
dojo.declare("MyStore", dojo.data.ItemFileReadStore, {
getValue:function(item, key){
var ret = this.inherited(arguments);
return ret.charAt(0)=="@" ? ret.substr(1) : ret;
}
})
然后只使用“MyStore”而不是ItemFileReadStore(或您正在使用的任何商店)。 我只是破解了代码,没有尝试过,但它应该很好地显示解决方案。 祝你好运
答案 1 :(得分:0)
是的,我相信。我想你要做的就是在这里阅读并确定如果它能起作用的方式:
以下陈述让我相信答案是肯定的:
... 通过要求访问通过 商店功能,商店可以隐藏 项目的内部结构。 这允许项目保留在 最有效的格式 表示a的数据类型 特定的情况。例如, items可以是XML DOM元素, 在这种情况下,商店将访问 使用DOM API时的值 调用store.getValue()。
作为第二个例子,该项目可能是 一个简单的JavaScript结构和 然后,商店可以访问这些值 通过普通的JavaScript访问器 符号。来自最终用户 透视,访问正是如此 same:store.getValue(item, “属性”)。这提供了一个 一致的外观和访问 各种数据类型。这也是 提供访问项目的效率 通过减少项目加载时间 避免转换为定义的 所有商店的内部格式 必须使用。 ... 通过商店访问器功能 提供了可能性 延迟加载值以及 懒惰的参考分辨率。
我很乐意给你一个例子,但我认为这需要更多的调查。