2017-05-10 8 views
-2

ストア内で作成された変数にアクセスしたいがアクセスできなかった。以下はコードの一部です。ExtJs 6のストア内の変数へのアクセスMVC

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にアクセスしたいです。

+0

どのバリアにアクセスしたいのですか。 – Tejas

+0

ol_mapにアクセスしたいと思います。私は私の質問を更新しました。 – wondie

答えて

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() 

    }, 
+0

残念ながら、GeoExtプラグインは 'layerGroup'が未定義であると訴えています。 – wondie

+0

申し訳ありません、 'layerGroup'は' undefined'ではなく 'null'です。 'Uncaught TypeError:プロパティ 'getLayers' of nullを読み取ることができません。 ' – wondie

0

を私が解決策を見つけました。以下に示すように、プロパティの関数を追加できます。

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() 

    })() 
}); 
+0

これはAlexanderの解決策の別のバリエーションです。問題は、元の問題の 'this'コンテキストがオブジェクトではなく、Ext.defineが呼び出されているスコープ(おそらくグローバルスコープ)です。 '' ol_map''変数の個数を関数に入れると、 '' this''コンテキストが異なります - 普通はExtJSオブジェクトです(何かばかげたゲームがない限り) –

+0

Alexanderの問題'layerGroup'はまだnullです。 'layerGroup'プロパティにアクセスするために使用される正しいコンテキストは何ですか? – wondie

+0

'' init''メソッドが呼び出されていますか?私はGeoExtライブラリを知らないので、わかりませんが、通常のExtJSストアは '' init''メソッドを持っていません。 –

関連する問題