我有一个静态枚举集
的模型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传递,这是出于可读性的原因。
答案 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);
}
它可能稍微冗长一点,但是如果随着时间的推移需要扩展对象,可能会更加灵活。也许他们有一个关联图标图像或类似的东西,例如你可能需要容纳的。