Ole*_*Ole 6 controller extjs extjs4
我一直试图让它工作很长一段时间,但我仍然无法找到解决方案,除了在视图中的监听器中添加一个afterrender.但我希望控制器能够处理它.
有没有人知道如何解决这个问题?
这就是我目前在我的文件中所拥有的内容 http://pastie.org/2751446
controller/App.js
Ext.define('HD.controller.App', {
extend: 'Ext.app.Controller'
,views: [
'core.Header',
'core.Navigation',
'core.Content'
]
,init: function() {
this.control({
'navigation a[id=tab1]': {
click: this.newTab
}
})
}
,newTab: function() {
console.log('Tab 1 should be loaded now');
}
});
Run Code Online (Sandbox Code Playgroud)
视图/型芯/ Navigation.js
Ext.define('HD.view.core.Navigation', {
extend: 'Ext.panel.Panel'
,name: 'navigation'
,alias: 'widget.navigation'
,layout: 'accordion'
,region: 'west'
,width: 200
,title: 'Navigation'
,collapsible: true
,items: [
{
title: 'Title 1'
,html: '<a id="tab1" style="cursor:pointer;">Tab 1</a>'
},
{
title: 'Title 2'
,html: 'Second'
}
]
});
Run Code Online (Sandbox Code Playgroud)
您尝试引用超链接的a方式不起作用.
this.control({
'navigation a[id=tab1]': {
click: this.newTab
}
})
Run Code Online (Sandbox Code Playgroud)
这只会查找ExtJS组件,而不是DOM元素.您很可能必须在afterrender或类似的地方附加点击.这并不意味着你不能离开在控制器中完成所有工作的方法.
编辑:
var controller = this;
controller.control({
'navigation': {
afterrender: function() {
Ext.get('tab1').on('click', function() {
controller.newTab();
});
}
}
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4561 次 |
| 最近记录: |