控制器无法获取视图的引用
controller not get a reference of a view
我做了一个简单的MVC应用程序,有一个'app.js'
Ext.application({
name: 'ImpPdf',
extend: 'ImpPdf.Application',
autoCreateViewport: true
});
有一个application.js
Ext.define('ImpPdf.Application', {
name: 'ImpPdf',
extend: 'Ext.app.Application',
views: [
'Main'
],
controllers: [
'Main'
],
stores: []
});
有一个'viewport.js'
Ext.define('ImpPdf.view.Viewport', {
extend: 'Ext.container.Viewport',
requires:[
'Ext.layout.container.Fit',
'ImpPdf.view.Main'
],
layout: {
type: 'fit'
},
items: [{
xtype: 'app-main'
}]
});
有一个控制器'Main.js'
Ext.define('ImpPdf.controller.Main', {
extend: 'Ext.app.Controller',
views: 'Main',
refs: [
{ ref: 'appMain', selector: 'appmain', xtype: 'app-main' }
],
init: function() {
console.log('Main.Controle');
console.log(this.getAppMain());
this.control({
'appmain tabpanel': {
click: this.onTabChange
}
});
},
onTabChange: function(tabPanel, newCard, oldCard, eOpts) {
console.log('tabchange');
}
});
有一个视图'Main.js'
Ext.define('ImpPdf.view.Main', {
extend: 'Ext.container.Container',
requires:[
'Ext.tab.Panel',
'Ext.layout.*',
'Ext.ux.GroupTabPanel'
],
alias: 'widget.appmain',
xtype: 'app-main',
layout: {
type: 'border'
},
defaults: {
bodyBorde: false,
split: true,
bodyPadding: 0
},
items: [
header,
west,
contentPanel
]
});
问题是,我无法在控制器中获得对视图的引用。控制台显示未定义。console.log (this.getAppMain ());
我需要得到一个tabpanel'来得到一个'tabchange'事件。
别名&是同义的:
alias: 'widget.appmain',
xtype: 'app-main',
它们应该是相同的,并且选择器应该只匹配一个
视图的xtype是app-main, ref应该是:
refs: [
{ ref: 'appMain', selector: 'app-main' }
]
ref创建的getter是getAppMain()
还要注意,不应该同时使用xtype和alias。以下是它们的区别:
xtype是对组件的引用。它被用来定义子组件。
alias是组件的配置。它定义了自己的xtype,可以在组件查询中作为选择器使用(就像ref一样)。
Ext.define('myForm', {
alias: 'widget.myForm',
items: [
{xtype: 'button'},
{xtype: 'textfield'}
]
可以替换alias: 'widget。myForm' by xtype: 'myForm',它们在这个特殊情况下是同义词。两者都将做同样的事情,但它令人困惑,因为您将xtype用于两种完全不同的事情(引用组件并定义将被引用的xtype)。
resume: alias定义了xtype, ref的selector属性使用组件查询来选择getter返回的组件。
相关文章:
- 如何在MVC5中ajax调用的部分视图中引用外部javascript
- 全局引用b/t模板和视图
- 如果视图中没有Jquery脚本引用,Unobtrusive Javascript Validation是不起作用的
- 如何在另一个视图中获取元素的引用id-UI5
- 从事件回调中引用包含主干视图
- 在挖空中引用对象构造函数外部视图模型的属性
- 如何在Sencha Architect中将控制器引用到视图
- 主干:丢失对实际视图的引用
- 对 ejs 视图文件的引用在构建后不会更改,尽管它在生产中结合了它.js - Javascript MVC
- 使用模态作为模板视图并引用它
- 木偶.js - 项目视图获取父区域引用
- E/Web 控制台 (8272): 未捕获的引用错误: 在视图寻呼机中加载 Web 视图时未定义函数名称:1
- 为什么在剃刀视图页面中引用JSON编码
- 如何扩展/获取对规则视图就地编辑器的引用
- 主干视图未捕获引用错误
- ExtJS控制器引用视图获胜'不要使用不同的别名
- AngularJS,通过引用更新子控制器视图中的ng repeat
- 以编程方式添加视图,然后引用这些视图
- 使用Aurelia's ref属性引用元素的视图模型
- 当引用对象改变时,react .js视图不更新