EXTJS7 自定义配置延迟初始化
小编:管理员 522阅读 2022.09.07
config段中的自定义配置默认会在initConfig中被初始化,一般会在构造函数中调用initConfig。 使用lazy属性可以避免配置在initConfig时被初始化,延迟到被调用时初始化。(延迟触发apply、update)
样例config: { configProp: 'prop', configPropLazy: { lazy: true, $value: 'configPropLazy' } }复制源码分析初始化
Base.js
initConfig: function(instanceConfig) { var me = this, cfg = me.self.getConfigurator(); me.initConfig = Ext.emptyFn; // ignore subsequent calls to initConfig me.initialConfig = instanceConfig || {}; cfg.configure(me, instanceConfig); return me; },复制
Configurator.js
configure: function(instance, instanceConfig) { ... if (cfg && !cfg.lazy) { --remaining; // A proper "config" property so call the setter to set the value. names = cfg.names; getter = names.get; // At this point the initGetter may have already been called and // cleared if the getter was called from the applier or updater of a // previously processed instance config. checking if the instance has // its own getter ensures the setter does not get called twice. if (instance.hasOwnProperty(getter)) { instance[names.set](values[name]); // The generated setter will remove the initGetter from the instance // but the user may have provided their own setter so we have to do // this here as well: delete instance[names.get]; } } ... }复制延迟初始化
Config.js
makeInitGetter: function() { var name = this.name, names = this.names, setName = names.set, getName = names.get, initializingName = names.initializing; return function() { var me = this; me[initializingName] = true; // Remove the initGetter from the instance now that the value has been set. delete me[getName]; me[setName](me.config[name]); delete me[initializingName]; return me[getName].apply(me, arguments); }; },复制
相关推荐
- ExtJs七(ExtJs Mvc创建ViewPort) 前言在4.1的时候,要先创建一个扩展于Ext.app.Application的类,然后用create创建它的实例来开始应用程序的。而在4.1.1,则可直接调用application方法开始执行应用程序,简化了。调用application方法,其参数是一个配置对象,主要配置项有以下三个:name:用来…
- 3DMAX提示和技巧 本主题标识使用 Civil View 的一些重要提示和技巧。常规使用屏幕分辨率至少为 1280x1024 的 Civil View。低于此分辨率时,一些面板将占用过多屏幕空间。 将视口设置为线框显示以达到最佳性能。 要尽可能简化用户界面,请在单个视口中工作并关闭 3ds Max 命令面…