【问题标题】:Accessing a variable within a store in ExtJs 6 MVC在 ExtJs 6 MVC 中访问存储中的变量
【发布时间】:2017-05-10 07:25:14
【问题描述】:

我想访问在商店中创建的变量,但我无法访问。下面是部分代码。

    Ext.define('MyApp.store.TreeStore', {
        extend: 'GeoExt.data.store.LayersTree',
        alias: 'store.layer_tree',
        init: function(app) {
            ....

            this.ol_map = new ol.Map({
                layers: [group, layer3, layer4],
                view: new ol.View({
                    center: [0, 0],
                    zoom: 2
                })
            });

        },
        layerGroup: this.ol_map.getLayerGroup()
    });

我想在layerGroup 的商店中访问ol_map

【问题讨论】:

  • 你要访问哪个变量解释一下
  • 我想访问 ol_map。我已经更新了我的问题。

标签: javascript extjs extjs6 geoext3


【解决方案1】:

问题是你的store init函数是在layerGroup定义之后执行的。

修复:

    init: function(app) {
        ....

        this.ol_map = new ol.Map({
            layers: [group, layer3, layer4],
            view: new ol.View({
                center: [0, 0],
                zoom: 2
            })
        });
        this.layerGroup = this.ol_map.getLayerGroup()

    },

【讨论】:

  • 不幸的是,GeoExt 插件抱怨 layerGroup 未定义。
  • 抱歉,layerGroup 不是 undefined 而是 nullUncaught TypeError: Cannot read property 'getLayers' of null
【解决方案2】:

我找到了解决方案。我可以为属性添加一个函数,如下所示。

Ext.define('MyApp.store.TreeStore', {
    extend: 'GeoExt.data.store.LayersTree',
    alias: 'store.layer_tree',
    layerGroup: (function() {
        ....

        this.ol_map = new ol.Map({
            layers: [group, layer3, layer4],
            view: new ol.View({
                center: [0, 0],
                zoom: 2
            })
        });
        return this.ol_map.getLayerGroup()

    }) ()
});

【讨论】:

  • 这是 Alexander 解决方案的另一种变体。问题是原始问题中的“this”上下文不是对象——它是调用 Ext.define 的范围(可能是全局范围)。当您将 ol_map 变量的数量放入函数时,this 上下文是不同的 - 通常它是 ExtJS 对象(除非正在玩一些愚蠢的游戏)
  • Alexander 解决方案的问题是layerGroup 仍然为空。那么访问layerGroup属性的正确上下文是什么?
  • 是否调用了init 方法?我不知道 GeoExt 库,所以我不能确定 - 但常规 ExtJS 商店没有 init 方法。
  • 它没有被调用。这可能是 Alexander 的解决方案对我不起作用的原因。
  • 这肯定是问题的一部分... ;)
猜你喜欢
  • 2016-05-15
  • 2023-04-01
  • 1970-01-01
  • 2019-05-02
  • 1970-01-01
  • 1970-01-01
  • 2014-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多