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);
      }    
   },

我想在日志中显示 refreshInterval 的名称,而不是 int 值。我该怎么办?

我愿意以不同的方式定义此枚举,只要出于可读性原因,我仍然可以将名称作为参数而不是 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 回答