0

我对 Dojo 了解不多,但以下可能:

我假设它有一个用于访问其数据存储的 getter/setter,是否可以覆盖此代码。

例如:

在道场商店我有'名字:@Joe'

是否可以检查到达:

得到()

if name.firstChar = '@' then just
return 'Joe'

和:

set(var)
if name.firstChar = '@' then set to @+var

这种事情可能吗?还是我需要一个包装 API?

4

2 回答 2

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(或您正在使用的任何商店)。我只是破解了代码,没有尝试过,但它应该很好地显示了解决方案。祝你好运

于 2009-04-26T00:09:22.363 回答
0

是的,我相信是的。我认为你想要做的是在这里阅读并确定它是否会起作用:

以下陈述使我相信答案是肯定的:

...通过要求访问商店功能,商店可以隐藏商品的内部结构。这允许项目以最有效地表示特定情况的数据类型的格式保留。例如,项目可以是 XML DOM 元素,在这种情况下,商店将在调用 store.getValue() 时使用 DOM API 访问这些值。

作为第二个示例,该项目可能是一个简单的 JavaScript 结构,然后商店可以通过普通的 JavaScript 访问器表示法访问这些值。从最终用户的角度来看,访问权限完全相同:store.getValue(item, "attribute")。这为访问各种数据类型提供了一致的外观和感觉。这还通过避免转换为所有商店都必须使用的定义的内部格式来减少项目加载时间,从而提高访问项目的效率。...通过存储访问器函数提供了延迟加载值以及延迟引用解析的可能性。

http://www.dojotoolkit.org/book/dojo-book-0-9/part-3-programmatic-dijit-and-dojo/what-dojo-data/dojo-data-design

我很想给你举个例子,但我认为这需要更多的调查。

于 2009-04-24T14:03:31.220 回答