我正在使用Ext JS MVC应用程序,需要进行本地化。试图重现官方文档(http://docs.sencha.com/extjs/6.2.0/guides/core_concepts/localization.html)。 区域设置文件正确加载。
控制台消息:
[W]覆盖现有映射:'viewmodel.users'来自 'clt.locale.en.view.users.UsersModel'到'clt.view.users.UsersModel'。 这是故意的吗?
但是不显示覆盖值(它们应该是网格列标题。
模型看起来像这样:
Ext.define('clt.view.users.UsersModel', {
extend: 'Ext.app.ViewModel',
requires:[
// something
],
// singleton: true,
data: {
key1: 'value1',
key2: 'value2',
keyN: 'valueN',
},
stores: {
// something
}
});
绑定到视图的值如下:
bind: { text: '{key1}' }
如果我将此模型设为单例,则本地化开始工作(网格标题显示本地化值),但网格数据为空。 所以有什么问题?帮助我理解它。
更新即可。问题解决了。我在Sencha论坛上找到了解决方案的线程:在本地化文件的config对象中添加本地化元素。例如:
Ext.define('clt.locale.en.view.users.UsersModel', {
override: 'clt.view.users.UsersModel',
config: {
data: {
key1: 'value1',
// some other keys
}
}
});
答案 0 :(得分:1)
警告不是一个好兆头。在您的情况下,您不应该像您应该那样应用覆盖。消息
[W]覆盖现有的映射:' viewmodel.users'来自' clt.locale.en.view.users.UsersModel' to' clt.view.users.UsersModel'。这是故意的吗?
首先,加载SELECT model,
driver,
COUNT(*) AS drives_for_this_model_and_driver
FROM new_table
GROUP BY model, driver
ORDER BY model, driver;
(您的本地化版本),然后加载clt.locale.en.view.users.UsersModel
(非本地化版本)并完全替换本地化版本。
您想要做的是以下内容:
clt.view.users.UsersModel
这应该删除警告。然后,您可以实例化UsersModel
Ext.define('clt.view.users.UsersModel', {
extend: 'Ext.app.ViewModel', // <- EXTEND ViewModel class
// define your locale-agnostic user model here
});
Ext.define('clt.locale.en.view.users.UsersModel', {
override: 'clt.view.users.UsersModel', // <- OVERRIDE implementation in the overridden class
// define your localized properties here.
});
但你得到了它的本地化版本。