在EXTJS中摆脱循环
我是ExtJS4MVC设计的新手。我有以下代码在EXTJS中摆脱循环,extjs,extjs4,extjs-mvc,Extjs,Extjs4,Extjs Mvc,我是ExtJS4MVC设计的新手。我有以下代码 onLaunch: function() { console.log("Launched Business Unit Controller"); var businessunitsStore = this.getStore('Businessunits'); businessunitsStore.load(function(records){ var comp = Ext.ge
onLaunch: function() {
console.log("Launched Business Unit Controller");
var businessunitsStore = this.getStore('Businessunits');
businessunitsStore.load(function(records){
var comp = Ext.getCmp('business_form');
for(var i=0;i<records.length;i++){
bu = records[i].data;
console.log(bu);
comp.add({
xtype:'button',
cls:'x-button',
width:90,
autoScroll:false,
height:60,
text:bu.businessunit_name,
enableToggle:true,
listeners:{
click: function(){
var pnl = Ext.getCmp('active-units-form');
pnl.add({
xtype:'label',
text:this.text,
})
}
}
}) //comp.add
} //for ...
});
}
onLaunch:function(){
console.log(“启动的业务单元控制器”);
var businessunitssstore=this.getStore('Businessunits');
businessunitssstore.load(函数(记录){
var comp=Ext.getCmp(“业务表单”);
对于(var i=0;i如果您不确定该关键字将是什么,最好避免使用此
关键字
click: function (button) {
var pnl = Ext.getCmp('active-units-form');
pnl.add({
xtype: 'label',
text: button.text,
})
}
如果要搜索的视图是在控制器的视图
配置中定义的,请尝试使用down
方法,而不是Ext.getCmp
onLaunch: function() {
console.log("Launched Business Unit Controller");
var businessunitsStore = this.getStore('Businessunits');
businessunitsStore.load(function(records){
var comp = this.down('#business_form'); //Ext.getCmp('business_form');
for(var i = 0; i < records.length; i++){
bu = records[i]; //.data;
console.log(bu);
var button = comp.add({
xtype:'button',
cls:'x-button',
width:90,
autoScroll:false,
height:60,
text:bu.get('businessunit_name'), //bu.businessunit_name,
enableToggle:true,
}) //comp.add
button.on('click', this.businessUnitButton_click, this);
// 3rd parameter 'this' will be controller instance inside handler
} //for ...
});
},
businessUnitButton_click: function (button) {
// 'this' is controller
var pnl = this.down('#active-units-form'); // Ext.getCmp('active-units-form');
pnl.add({
xtype:'label',
text: button.text,
})
}
onLaunch:function(){
console.log(“启动的业务单元控制器”);
var businessunitssstore=this.getStore('Businessunits');
businessunitssstore.load(函数(记录){
var comp=this.down('#business_form');//Ext.getCmp('business_form');
对于(var i=0;i
为什么不使用eventbus(控件)?当您使用MVC应用程序时,它已经存在,因此我建议您使用它。使用它时,您的控制器中有listener方法,按钮实例作为参数。this
关键字将为您提供控制器实例,而您可以使用按钮实例使用up()
/down()向上/向下导航
。当然,您可以添加另一个唯一标识符,并检查是否需要该标识符
onLaunch: function() {
controls('#business_form button[ident=businessunit-btn]':{click:this.onClickBussinesUnitBtn});
console.log("Launched Business Unit Controller");
var businessunitsStore = this.getStore('Businessunits');
businessunitsStore.load(function(records){
var comp = Ext.getCmp('business_form');
for(var i=0;i<records.length;i++){
bu = records[i].data;
console.log(bu);
comp.add({
xtype:'button',
cls:'x-button',
ident: 'businessunit-btn',
width:90,
autoScroll:false,
height:60,
text:bu.businessunit_name,
enableToggle:true
}) //comp.add
} //for ...
});
},
onClickBussinesUnitBtn: function(btn){
var pnl = Ext.getCmp('active-units-form'); // I recommend you to instantiate this either also with a controller function, so that you can store the reference or doing it with up/down as Alexey mentioned.
pnl.add({
xtype:'label',
text:btn.text
});
}
onLaunch:function(){
控件(“#业务表单按钮[ident=businessunit btn]”:{单击:this.onclickbusinessinsunitbtn});
console.log(“启动的业务单元控制器”);
var businessunitssstore=this.getStore('Businessunits');
businessunitssstore.load(函数(记录){
var comp=Ext.getCmp(“业务表单”);
对于(var i=0;i)您的问题不是很清楚,我不知道您在问什么。我的代码正在运行,我想整理一下就这样。例如,我想在onLaunch方法之外动态处理添加到表单中的按钮的单击事件