Javascript Extjs4创建mixin
我正在尝试为Javascript Extjs4创建mixin,javascript,extjs,extjs4,Javascript,Extjs,Extjs4,我正在尝试为Ext.grid.Panel组件创建混合。这就是我尝试这样做的方式: Ext.define('myMixin', { myFunc:function(){ console.log('completed!'); } }); Ext.grid.Panel.mixin('newmixin','myMixin'); 这样做的结果是一个mixin已添加到网格组件中,但该值是未定义的。希望我错过了一些简单的东西,但是如果能得到一些帮助,我将不胜感激。我已经解决
Ext.grid.Panel
组件创建混合。这就是我尝试这样做的方式:
Ext.define('myMixin', {
myFunc:function(){
console.log('completed!');
}
});
Ext.grid.Panel.mixin('newmixin','myMixin');
这样做的结果是一个mixin已添加到网格组件中,但该值是
未定义的
。希望我错过了一些简单的东西,但是如果能得到一些帮助,我将不胜感激。我已经解决了这个问题,但我仍然不能100%确定原因。如果有人能解释,我很乐意把他们作为答案
我做了以下工作:
Ext.grid.Panel.mixin('newmixin',Ext.define('myMixin', {
myFunc:function(){
console.log('completed!');
}
}));
我已经解决了这个问题,但我仍然不能百分之百确定原因。如果有人能解释,我很乐意把他们作为答案 我做了以下工作:
Ext.grid.Panel.mixin('newmixin',Ext.define('myMixin', {
myFunc:function(){
console.log('completed!');
}
}));
记住Ext.define是异步完成的。我不知道Ext.grid.Panel.mixin是什么,因为ExtJS 4.0.1中不存在它,但您可以尝试在Ext.define的回调参数中添加mixin:
Ext.define('myMixin', {
myFunc:function(){
console.log('completed!');
}
}, function() {
Ext.grid.Panel.mixin('newmixin','myMixin');
});
记住Ext.define是异步完成的。我不知道Ext.grid.Panel.mixin是什么,因为ExtJS 4.0.1中不存在它,但您可以尝试在Ext.define的回调参数中添加mixin:
Ext.define('myMixin', {
myFunc:function(){
console.log('completed!');
}
}, function() {
Ext.grid.Panel.mixin('newmixin','myMixin');
});
您是否尝试以声明方式添加mixin
Ext.define('Path.to.MyMixin', {
someFunc: function () {return 0;}
});
然后,在网格中:
Ext.define('Path.to.MyGrid', {
extend: 'Ext.grid.Panel',
mixins: ['Path.to.MyMixin'],
...
});
您是否尝试以声明方式添加mixin
Ext.define('Path.to.MyMixin', {
someFunc: function () {return 0;}
});
然后,在网格中:
Ext.define('Path.to.MyGrid', {
extend: 'Ext.grid.Panel',
mixins: ['Path.to.MyMixin'],
...
});
我认为原因是,在原始代码中,您试图使用字符串“myMixin”引用myMixin:Ext.grid.Panel.mixin('newmixin','myMixin');但是您只使用诸如“myMixin”之类的字符串定义类定义——在定义之后,您引用它的对象引用:myMixin(不带引号),我认为原因是在原始代码中,您试图使用字符串“myMixin”引用myMixin:Ext.grid.Panel.mixin('newmixin','myMixin');但是您只能使用诸如“myMixin”之类的字符串定义类定义——在定义之后,您将引用它的对象引用:myMixin(不带引号)