如何获取extjs中的枚举名称?

时间:2012-12-12 19:51:57

标签: javascript extjs

我有一个静态枚举集

的模型
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传递,这是出于可读性的原因。

2 个答案:

答案 0 :(得分:3)

Ext具有Ext.Object.getKey()方法:

  

返回与给定值对应的第一个匹配键。如果不   找到匹配值,返回null。

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

alert(Ext.Object.getKey(person, 'food')); // alerts 'loves'

答案 1 :(得分:0)

我认为不是在传统意义上使用Enumeration,而是可以存储一组键值对象,如下所示:

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

它可能稍微冗长一点,但是如果随着时间的推移需要扩展对象,可能会更加灵活。也许他们有一个关联图标图像或类似的东西,例如你可能需要容纳的。