1

私はExtJs4.1とDeftJsを使用しています。

一部のクラスは、次のようなコンストラクターで定義されます。

Ext.define( 'A.helper.Report', {
  config: {
     conf     : null,
     viewMain : null
  },
  constructor: function( oConfig ) {
     this.conf = oConfig.conf;
     this.viewMain = oConfig.viewMain;
     this.initConfig( oConfig );
  }
...

ここで、このクラスのいくつかのインスタンスを次のように作成します。

var class1 = Ext.create( 'A.helper.Report', {
   conf: someValue,
   viewMain: someObject
} );

var class2 = Ext.create( 'A.helper.Report', {
   conf: otherValue,
   viewMain: otherObject
} );

これらのインスタンスを使用する場合、異なるoConfigデータを提供しますが、両方ともclass12class2番目のデータを持ちますoConfig

したがってthis.conf、両方のインスタンスで呼び出すと、が取得されますsomeValue

作成済みのインスタンスのデータを保持するにはどうすればよいですか?


解決:

私が書いた

Ext.define( 'A.helper.Report', {
   ... 
  references: {}
  ...

そこに私のインスタンスを置き、古いインスタンスをオーバーライドします。

ヘルプに切り替えreferences: nullました。

..。

4

1 に答える 1

3

プロトタイプオブジェクトをいじらないように注意してください...

書き直された答え

あなたはそれを間違った方法でやっています。

この動作中のJSFiddleを参照してください

Ext.define('A.helper.Report', {
     config: {
         conf     : null,
         viewMain : null
     },
     constructor: function(cfg) {
         this.initConfig(cfg);
     }
});


var class1 = Ext.create('A.helper.Report',{
    conf: 66,
    viewMain: 'Bear'
});

var class2 = Ext.create('A.helper.Report',{
    conf: 88,
    viewMain: 'Eagle'
});

class1.getConf(); // 66
class1.getViewMain(); // Bear
class2.getConf(); // 88
class2.getViewMain(); // Eagle
于 2013-01-22T15:05:01.583 に答える