3

このモデルには静的列挙セットがあります

Ext.define('MyApp.model.RefreshableComponent', {
   statics: {
      RefreshIntervals: {
         ONEMIN: 1,
         FIVEMINS: 2,
         TENMINS: 3,
         FIFTEENMINS: 4,
         DEFAULT: 5
      }
   }
});

そして、私はそのように別のクラスでそれにアクセスしています

updateDefaultTask: function () {
   this.updateTask(MyApp.model.RefreshableComponent.RefreshIntervals.DEFAULT);
},
updateTask: function (refreshInterval) {
      var components = this.getVisibleComponentsByRefreshInterval(refreshInterval);
      if (this.debugMode) {
         console.log("REFRESHMANAGER: Triggered the update task " + refreshInterval);
      }    
   },

int値ではなく、refreshIntervalの名前をログに表示したいと思います。これについてどうすればいいですか?

可読性の理由から、名前を int ではなくパラメーターとして渡すことができる限り、この列挙型を別の方法で定義することにオープンです。

4

2 に答える 2

3

Ext にはExt.Object.getKey()メソッドがあります。

指定された値に対応する最初に一致するキーを返します。一致する値が見つからない場合は、null が返されます。

var person = {
    name: 'Jacky',
    loves: 'food'
};

alert(Ext.Object.getKey(person, 'food')); // alerts 'loves'
于 2012-12-12T19:59:31.133 に答える
0

従来の意味で列挙型を使用する代わりに、次のようなキーと値のペア オブジェクトのコレクションを格納できると思います。

Ext.define('MyApp.model.RefreshableComponent', {
   statics: {
      RefreshIntervals: {
         ONEMIN: { value = 1, name = 'ONEMIN' },
         FIVEMINS: { value = 2, name = 'FIVEMINS' },
         TENMINS: { value = 3, name = 'TENMINS' },
         FIFTEENMINS: { value = 4, name = 'FIFTEENMINS' },
         DEFAULT: { value = 5, name = 'DEFAULT' }
      }
   }
});

次のように参照できます。

updateDefaultTask: function () {
   this.updateTask(MyApp.model.RefreshableComponent.RefreshIntervals.DEFAULT.name);
}

int 値が必要な場合:

updateDefaultTask: function () {
   this.updateTask(MyApp.model.RefreshableComponent.RefreshIntervals.DEFAULT.value);
}

おそらくもう少し冗長ですが、必要に応じてオブジェクトを拡張できるため、もう少し柔軟です。おそらく、彼らはあなたが対応する必要があるかもしれない関連アイコン画像または類似のものを持っているかもしれません.

于 2012-12-12T21:12:33.533 に答える