extjs - 在 ExtJS 4 中多次使用相同 View 和存储的最佳实践

标签 extjs parameters store

我想在 ExtJS 应用程序中同时拥有具有不同商店的同一 View 的不同实例。目前,我在视口(viewport)中创建了同一 View (Ext.view.View)的多个实例。

但是,在每个 View 中都有不同的商店的最佳做法是什么?我发现的每个示例都在使用 Controller 的 stores-Config 创建的 View 中使用 Store-ID。但这会为每个 View 使用同一个商店。

目前我想出了以下可能的解决方案:

  • 为每个 View 实例创建一个自己的商店类。将所有商店添加到 Controller 并为每个 View 实例使用不同的商店 ID。
  • 根本不要使用 Controller 的存储,并在 View 的 initComponent 中创建一个新的存储,手动将不同的参数传递给存储的每个实例。
  • 根本不要使用 Controller 的存储,并在 View 的 initComponent 中手动创建一个新的存储。然后使用 load 手动加载商店,为商店的每个实例使用不同的参数。

  • 这些解决方案中的任何一个是最佳实践还是应该以不同的方式完成?

    最佳答案

    Controller 的stores数组的东西
    也就是说,它将覆盖任何 storeId定义。加载 store 类后, Controller 设置 storeId根据命名空间约定,创建 store 并使用值作为 soreId 创建 getter 方法方法.

    让我介绍选项 4

  • 为 View 定义一个存储并在 View 中使用它(您也可以在 Controller 中使用它,只需使用 requires 数组)。
  • 选择有效itemId的意见和有效storeId的商店应该取决于 itemId View 的(在创建 View 时设置它!)。
  • initComponent创建 storeId并在 StoreManager 中查找商店。如果不存在,则创建它并提供客户配置和 storeId .

  • 如果您每次都需要销毁 View 和商店,请查看 this post

    演示初始化组件
    initComponent: function() {
        var me = this,
            storeId = me.storeId + me.itemId;
        me.store = Ext.StoreManager.lookup(storeId);
        if(me.store === null)
            me.store = Ext.create('App.data.CustomViewStore',Ext.apply({storeId: storeId},me.storeCfg || {}));
        me.callParent(arguments);
    }
    

    注:如果您使用 views 加载 View 数组你最终会得到一个可能不会给你预期的 View 的 setter/getter 。您也可以在这里使用 Controller 的 requires 数组。如果您想使用 getter,只需使用 refs 创建自己的 getter配置。

    关于extjs - 在 ExtJS 4 中多次使用相同 View 和存储的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27333787/

    相关文章:

    javascript - 为什么调用函数时参数不能正确传递?

    javascript - ExtJS:如何使组件在其父容器内最大化?

    javascript - ExtJS4 - 表单提交按钮周围出现的轮廓

    c# - 数学公式在 C# 中的答案与在 Excel 或计算器中的答案不同

    c++ - 在 C++ 中将数组作为参数从一个函数传递给另一个函数?

    java - Eclipse 中的 Servlet 脚本

    python - 字典存储对。谁存储三元组?

    json - Dojo 如何从 dojo.data.ItemFileReadStore 获取 JSON 属性

    flutter - 有没有办法在 flutter 中管理全局商店?

    css - 图片在 sencha touch 的轮播中重叠