【问题标题】:Extjs: how to access external store from view's rendererExtjs:如何从视图的渲染器访问外部存储
【发布时间】:2013-11-14 01:51:15
【问题描述】:

我有一个带有一些存储的网格,分配给它并使用组合框作为列编辑器(另一个存储用于值)。为了在网格中显示正确的值,我使用了自定义渲染器,在这个渲染器中我需要访问组合框的存储——这就是问题所在。

我看到了两种可能的方式:

  1. 不知何故将此商店从控制器放到网格中;
  2. 从组合框获取存储。

不幸的是,我找不到任何解决方案。你能帮助我吗?提前谢谢你。

当前无法解决我的问题的当前渲染器代码(需要重新制作才能从商店获取标题)

    var comboRenderer = function(value, metaData, record, rowIndex, colIndex, store, view) {
        var combo = this.down('#typeCombo');
        if (combo) {
            var record = combo.findRecord('name', value);
            return record.get('title');
        } else {
            return value;
        }
    };

UPD:新的渲染器,正在工作:

    var comboRenderer = function(value, metaData, record, rowIndex, colIndex, store, view) {
        var types_store = Ext.getStore('comboStore');
        var index = types_store.findExact('name', value.toString());
        if (index != -1) {
            return types_store.getAt(index).get('title');
        } else {
            return value;
        }
    };

【问题讨论】:

  • 发布一些代码,你如何声明相关的视图/控制器?
  • 似乎要显示的值应该在记录中以呈现行,而不是在组合框的存储中。如果您需要显示属性,您应该考虑将其与记录一起引入并在渲染器中使用。
  • @EvanTrimboli 有很多代码,你到底想看什么?是的,我有单独的视图和控制器。
  • @dbrin 我添加了渲染器代码 - 这是你的意思吗?如果是 - 它在编辑网格时工作正常,但是当我在创建网格时从服务器加载数据时它不能以这种方式获取价值 - combonull。所以我想直接从商店买。
  • 组合框在所有行中的存储是否相同?然后你可能只做一个 Ext.getStore(..)。对于 b) combo.getstore 不起作用?

标签: model-view-controller extjs extjs4 renderer


【解决方案1】:

请注意,使用 Extjs 的推荐方法是使用他们的 MVC 应用程序架构。然而,在幕后StoreManager 正在发挥作用。你可以试试它的别名Ext.getStore(...) 来尝试获取商店。

【讨论】:

    猜你喜欢
    • 2012-05-12
    • 2019-11-08
    • 2015-04-04
    • 2023-04-01
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    • 2017-04-14
    • 1970-01-01
    相关资源
    最近更新 更多