由于我似乎没有在森查论坛上得到任何答案,我只是在这里重复我的问题:
我目前正在从4.2.1迁移到5.1.0.107,在理解一些内容时遇到了问题:
Sencha dev 埃文特声明这里,在不使用可观察的混联的类中,只需要从构造函数手动调用initConfig。
文档中可观察到的混音的第一个例子通过手动调用它,结果并非如此。
运行来自文档的代码会导致异常(hasListeners是未定义的),这个异常可以通过将this.mixins.observable.constructor.call(this, config);放置到构造函数中来解决。
而且,在我看来,initConfig可以从文档中删除,没有任何缺点(至少没有我能够复制的任何缺点).
下面两个代码的唯一不同之处是雇员构造函数.
错误小提琴 (从文档中复制的代码)
Ext.define('Employee', {
mixins: ['Ext.mixin.Observable'],
config: {
fullName: ''
},
constructor: function(config) {
this.initConfig(config); // We need to initialize the config options when the class is instantiated
},
quitJob: function() {
this.fireEvent('quit');
}
});
var newEmployee = Ext.create('Employee', {
fullName: 'Ed Spencer',
listeners: {
quit: function() {
alert(this.getFullName() + " has quit!");
}
}
});
try {
newEmployee.quitJob(); // Throws exception since hasListener is undefined
} catch (exc) {
alert('Error occurred: ' + exc.message);
}工作小提琴 (删除initConfig &正确初始化mixin )
Ext.define('Employee', {
mixins: ['Ext.mixin.Observable'],
config: {
fullName: ''
},
constructor: function(config) {
// Make code work by removing call to initConfig and initializing the observable mixin
//this.initConfig(config); // We need to initialize the config options when the class is instantiated
this.mixins.observable.constructor.call(this, config);
},
quitJob: function() {
this.fireEvent('quit');
}
});
var newEmployee = Ext.create('Employee', {
fullName: 'Ed Spencer',
listeners: {
quit: function() {
alert(this.getFullName() + " has quit!");
}
}
});
try {
newEmployee.quitJob(); // Will log 'Ed Spencer has quit!'
} catch (exc) {
alert('Error occurred: ' + exc.message);
}如果有人能回答以下问题,我会非常高兴的:
initConfig?Ext.mixin.Observable和Ext.util.Observable有什么区别?谢谢并致以最良好的问候
发布于 2015-03-06 13:58:08
以下是ExtJs5.1升级指南的摘录-
“ExtJS5.1、ExtJS5.1中的新版本中提到的Ext.util.Observable和Ext.mixin.Observable API的统一仍然有两个可观察的类(Ext.mixin.Observable和Ext.util.Observable),但是它们的API差异已经消除了。只有一个例外: Ext.mixin.Observable在其构造函数中调用initConfig,而Ext.util.Observable使用遗留Ext.apply方法将配置对象属性复制到实例中。我们建议应用程序继续使用Ext.mixin.Observable,但在可预见的将来,我们将继续支持Ext.util.Observable,因为框架内部和用户代码中的许多类取决于它的行为。
https://stackoverflow.com/questions/28805491
复制相似问题