Ext JS 中的多个 类 以更新和共享相同的配置设置
Multiple classes in Ext JS to update and share the same config settings
我对使用 Ext JS 4.0.7 还很陌生,最近发现了 Config 选项,所以我设置了以下配置 class,其初始化如下:
Ext.define('CurrentRowSelection', {
extend: 'Ext.app.Controller',
config: {
currentAccountID: {
$value: 'Empty',
cached: true,
evented: true
}
},
initialize: function(config) {
this.callParent(config);
}
});
我可以从另一个 class 的 侦听器事件 中很好地更新此配置,即右键单击行记录并获取 currentAccountID 值。但是,每次我尝试在初始化后从新的 class 访问新的、更新的配置时,它都会恢复到 'Empty' 值。
以下用于从包含侦听器的 class 设置配置:
var CurrentRowSelection = new CurrentRowSelection();
CurrentRowSelection.setCurrentAccountID(1);
然而,当我在一个新的 class 中创建一个新的构造函数时,希望从其他软件访问这个新更新的配置,我的 console.log 告诉我它正在不断地恢复到默认值,因为每次创建新的构造函数时它似乎都在初始化 - 这是有道理的,但我需要停止它。
我如何做到这一点并确保始终保存此值,每次?谢谢。
不要每次都制作新的控制器。每个控制器应该只实例化一次,因为如果你实例化多个相同类型的控制器,你在control
方法中准备的每个事件绑定都会被执行多次(control
方法通常是最重要的方法controller
,尽管可能会有例外。)
因此每个控制器都应该仅作为单个实例存在,并且可以随时随地使用 getController
访问该单例:
MyAppName.app.getController("ControllerName").setCurrentAccountID(1)
也就是说,我建议研究使用存储来存储数据,而不是控制器。商店提供与服务器同步设置的可能性(创建、读取、更新、删除)。如果你想创建一个单例商店,你会给它一个 storeId
并使用 Ext.getStore()
来访问商店。
例如,我的应用程序中的配置设置在商店的第一条记录中,storeid AllSettings
:
Ext.getStore("AllSettings").getAt(0).get("groupDiscoveryCacheHours")
我对使用 Ext JS 4.0.7 还很陌生,最近发现了 Config 选项,所以我设置了以下配置 class,其初始化如下:
Ext.define('CurrentRowSelection', {
extend: 'Ext.app.Controller',
config: {
currentAccountID: {
$value: 'Empty',
cached: true,
evented: true
}
},
initialize: function(config) {
this.callParent(config);
}
});
我可以从另一个 class 的 侦听器事件 中很好地更新此配置,即右键单击行记录并获取 currentAccountID 值。但是,每次我尝试在初始化后从新的 class 访问新的、更新的配置时,它都会恢复到 'Empty' 值。
以下用于从包含侦听器的 class 设置配置:
var CurrentRowSelection = new CurrentRowSelection();
CurrentRowSelection.setCurrentAccountID(1);
然而,当我在一个新的 class 中创建一个新的构造函数时,希望从其他软件访问这个新更新的配置,我的 console.log 告诉我它正在不断地恢复到默认值,因为每次创建新的构造函数时它似乎都在初始化 - 这是有道理的,但我需要停止它。
我如何做到这一点并确保始终保存此值,每次?谢谢。
不要每次都制作新的控制器。每个控制器应该只实例化一次,因为如果你实例化多个相同类型的控制器,你在control
方法中准备的每个事件绑定都会被执行多次(control
方法通常是最重要的方法controller
,尽管可能会有例外。)
因此每个控制器都应该仅作为单个实例存在,并且可以随时随地使用 getController
访问该单例:
MyAppName.app.getController("ControllerName").setCurrentAccountID(1)
也就是说,我建议研究使用存储来存储数据,而不是控制器。商店提供与服务器同步设置的可能性(创建、读取、更新、删除)。如果你想创建一个单例商店,你会给它一个 storeId
并使用 Ext.getStore()
来访问商店。
例如,我的应用程序中的配置设置在商店的第一条记录中,storeid AllSettings
:
Ext.getStore("AllSettings").getAt(0).get("groupDiscoveryCacheHours")