混合并匹配声明和程序化声明? (道场/ JS)

时间:2012-01-25 12:41:45

标签: javascript dojox.grid.datagrid dojo

我正在研究一个使用dojo datagrid和JsonRestStore的旧代码库,使用声明式方法(在HTML中)。我现在正在尝试调整它以使用更新的dojo.store.JsonRest。

当我在HTML中声明JsonRest和ObjectStore时,它可以工作。

我想使用json.store.Cache作为我的商店,dojo.store.JsonRest和dojo.store.Memory支持它。 json.store.Cache的构造函数有两个参数。

a)是否有可能以HTML声明式样式定义构造函数参数?

我不想触摸Datagrid的(声明性)代码,所以我尝试在dojo.addOnLoad中设置Grid的存储。我在Firebug中为dojo.js第402行得到一个奇怪的错误,这实际上是一个评论:

  

// 5.评估:模块是通过define定义的,加载器已经评估了工厂并计算了结果。

我的猜测是错误与dojo.js完全没有关系,并且异常实际发生在某个地方的封闭中(我想我以前见过这个)。

b)是否可以通过这种方式混合和匹配声明式和程序式?如果是,我应该在什么事件上设置网格的商店?

1 个答案:

答案 0 :(得分:2)

我自己回答这个问题,因为我后来才知道。混合和匹配声明性和程序化风格似乎没有问题。

我从使用dojo.addOnLoad改为dojo.ready,但我认为这不是问题。

我试图在调用datagrid.setQuery时设置datagrid的查询,然后使用datagrid.setStore设置存储。无论我尝试哪种顺序(首先查询或先存储),它都无法工作。 结果两者都必须在调用setStore时设置。该方法接受查询作为其第二个参数。 这解决了我的问题。