DoJo获得/设置覆盖可能

时间:2009-04-24 13:20:50

标签: dojo

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

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

例如:

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

是否可以检查获取:

的get()

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

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

这种事情有可能吗?或者我需要一个包装API吗?

2 个答案:

答案 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,   “属性”)。这提供了一个   一致的外观和访问   各种数据类型。这也是   提供访问项目的效率   通过减少项目加载时间   避免转换为定义的   所有商店的内部格式   必须使用。   ...    通过商店访问器功能   提供了可能性   延迟加载值以及   懒惰的参考分辨率。

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

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