dojo.store.Observable,JSON REST和queryEngine
有人知道如何在Dojo中使用JsonRest存储,并使用可观察的武器,如dojo.store.Observable中的那个?
我需要什么,服务器端来实现商店并使其作为可观察商店? 客户端呢? 该文档说明了http://dojotoolkit.org/reference-guide/1.7/dojo/store/Observable.html
如果您使用的是像JsonRest商店这样的服务器端商店,则需要提供queryEngine以便更新对象正确包含在查询中或从查询中排除。 如果queryEngine不可用,则观察侦听器将使用未定义的索引进行调用。
但是,我不知道他们的意思。 我从来没有自己创建过商店,也不是100%熟悉queryEngine(说实话,我觉得它有点令人困惑)。 为什么queryEngine需要? “undefined index”是什么意思? 以及你如何为JsonRest商店编写queryEngine? 我不应该为可观察的REST存储使用某种Web套接字,因为其他用户也可能更改数据?
困惑!
我意识到这个问题有点旧,但这里有一些信息供将来参考。 由于这是一个多部分的问题,我将把它分解成单独的部分:
1)JsonRest的服务器端实现
在实现JsonRest Store的服务器端有一个相当不错的写法。 它显示了JsonRest将生成的标题以及其余内容将包含哪些内容。 它有助于形成JsonRest api如何转换为HTTP的心理模型。
2)查询引擎
在同一页面之前,解释了query()如何工作在客户端。 基本上, query()
函数需要能够接收对象字面量(例如: {title:'Learning Dojo',categoryid:5}
),并返回存储中与这些条件匹配的对象。 “在商店中”意思已经加载到客户端的内存中,而不是在服务器上。
根据你想要做的事情,可能不需要编写你自己的queryEngine - 只要使用内置的SimpleQueryEngine就可以构建自己的自定义商店。 引擎只需要传递一个对象字面值,并为您添加整个dojo query()api。
3)可观察的
我的理解是Observable监视对象集合中的客户端变化(例如:添加或删除结果)或甚至在特定对象内(例如:post 5已更改标题)。 它不会监视服务器端发生的更改。 它只是提供一种机制来通知客户端应用程序的其他方面数据已更改,以便页面的所有方面保持同步。
关于在标题'集合数据绑定'和'对象数据绑定:dojo /有状态'下使用Observables有一整篇文章。
4)并发性
为了使客户端数据与服务器端数据保持同步,您需要做两件事:a)轮询来自服务器上其他用户的更改,b)使用事务将数据发送到服务器。
a)要轮询对数据的更改,您希望让对象库在变量中跟踪活动查询。 然后,使用setTimeout()
或setInterval()
再次在后台运行查询。 确保应用程序的小部件或其他方面使用Observables来监视它们所依赖的查询结果集中的更改。 这样,其他用户在服务器上的更改会自动反映到整个应用程序中。
b)使用交易结合必须结合的行动。 然后,确保服务器发回HTTP 200状态代码(意思是'It Worked!')。 如果事务在400s内返回一个HTTP状态,那么它由于某种原因不起作用,并且您需要重新查询数据,因为后端上的某些内容发生了更改。 例如,您要更新的记录已被删除,因此您无法更新它。 有关交易的信息也写在“交易”标题下,
链接地址: http://www.djcxy.com/p/66485.html