Javascript 如何在extjs中获取枚举的名称?
我有一个静态枚举集的模型Javascript 如何在extjs中获取枚举的名称?,javascript,extjs,Javascript,Extjs,我有一个静态枚举集的模型 Ext.define('MyApp.model.RefreshableComponent', { statics: { RefreshIntervals: { ONEMIN: 1, FIVEMINS: 2, TENMINS: 3, FIFTEENMINS: 4, DEFAULT: 5 } } }); 我在另一个类中访问它,就像这样 update
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值。我该怎么办
我愿意以不同的方式定义此枚举,只要出于可读性原因,我仍然可以将名称作为参数传递,而不是int。Ext有以下方法:
返回与给定值对应的第一个匹配键。如果没有
找到匹配的值,返回null
我想您可以存储一组键值对对象,而不是使用传统意义上的枚举,如下所示:
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);
}
您可以这样引用它们:
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);
}
它可能更详细一点,但更灵活一点,因为如果需要的话,可以扩展对象。例如,他们可能有一个关联图标或类似的东西,您可能需要适应。谢谢您的回答,这是一个有效的选择,并将在将来记住这一点。