【问题标题】:Multiple JsonReaders reading different sections of JsonStore's data多个 JsonReader 读取 JsonStore 数据的不同部分
【发布时间】:2011-05-16 04:59:43
【问题描述】:

说我有一个这样的 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。是否可以将两个组合框绑定到同一个商店但具有不同的 jsonreader?即 cmbStaff 的 datareader 会读取带有 root: 'Staff' 的字符串,而 cmbStudent 会读取带有 root 'Students' 的字符串?

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

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

【问题讨论】:

    标签: extjs jsonreader jsonstore


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

        如果数据是不稳定的,那么您将不得不一遍又一遍地获取它们,因此您最好只使用两个单独的 JsonStore,其中 JsonReader 会访问相同的脚本来为您的数据提供服务。

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

            基本规则是这样的:

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

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

            【讨论】:

              猜你喜欢
              • 2011-03-01
              • 2020-09-13
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2023-03-05
              相关资源
              最近更新 更多