0

说我有一个像这样的 json 字符串: 代码:

{"Staff":[{"id":1,"name":"John"},{"id":2,"name":"Mary"},{"id":3,"name":"Sandra"}],"Students":[{"id":2,"name":"Peter"},{"id":3,"name":"Carl"},{"id":4,"name":"Hodges"}]}

(注意:如果您想查看格式更好的 json 字符串,请将其粘贴到http://json.parser.online.fr/上)

我有两个组合框 cmbStaff 和 cmbStudents。是否可以将两个组合框绑定到同一个商店但具有不同的 jsonreaders?即 cmbStaff 的 datareader 将读取带有 root: 'Staff' 的字符串,而 cmbStudent 将读取带有 root 'Students' 的字符串?

这是为了节省商店制作的 AJAX 数量,并为每个组合框设置不同的商店(想象一下,如果我的表单有 20 个组合框!)。

有任何想法吗?如果您需要更多信息,请随时通知我谢谢!

4

5 回答 5

1

我对此不是 100% 的,但我很确定最佳做法是每个组合框一个商店。如果您必须发出 20 个小的 AJAX 请求来制作表单,那么您需要发出 20 个请求。数据真的不多。从长远来看,它将使您的应用程序更易于维护,因为您不会有一些超级请求,其中包含来自一堆组合框的所有这些不相关的数据位。

于 2010-11-26T14:06:13.367 回答
0

你可以有两个不同的 JsonReader。只需手动在它们之间切换(即使用组合框的事件)。

于 2010-11-28T17:31:54.597 回答
0

正如其他人所说,您希望每个组合框有一个商店。

如果您有相当静态的数据,请将它们作为 Json 抓取一次,并将其粘贴到某个全局数组中。为每个组合使用简单的 ArrayStore,以避免一直返回服务器。

如果数据是易失的,那么您将不得不一遍又一遍地获取它们,因此您不妨只使用两个单独的 JsonStores,其中 JsonReaders 使用相同的脚本来为您的数据提供服务。

于 2010-11-27T08:08:47.890 回答
0

加载操作后,商店中只会有一组记录;你不会从上面的操作中得到你想要的。

我会使用两个单独的商店。一个配置为加载,例如,学生,另一个配置为通过使用loadData 函数加载人员,该函数使用接收到 load 事件时第一个检索到的 json。

于 2010-11-26T22:07:21.840 回答
0

基本规则是这样的:

相同的基础数据集但需要显示不同的列?使用同一个商店是可以的(只需将组合框指向所需的字段)。

不同的基础数据集(所需字段之间没有关系)?应该使用不同的商店。

于 2010-11-29T11:48:15.687 回答