Model view controller ref在extjs4 mvc应用程序的控制器中不工作

Model view controller ref在extjs4 mvc应用程序的控制器中不工作,model-view-controller,view,controller,extjs4,ref,Model View Controller,View,Controller,Extjs4,Ref,我正在尝试构建MVC应用程序 下面是我的app/controller/project.js文件代码 Ext.define('rt.controller.project'{ 扩展:“Ext.app.Controller”, 门店:[“项目”], 型号:[“项目”], 视图:['project.main','project.projectlist'], 参考文献:[ {ref:'projectList',选择器:'projectList'}, {ref:'projectData',选择器:'proj

我正在尝试构建MVC应用程序

下面是我的app/controller/project.js文件代码

Ext.define('rt.controller.project'{
扩展:“Ext.app.Controller”,
门店:[“项目”],
型号:[“项目”],
视图:['project.main','project.projectlist'],
参考文献:[
{ref:'projectList',选择器:'projectList'},
{ref:'projectData',选择器:'projectlist dataview'}
],
init:function(){
这是我的控制({
“项目列表数据视图”:{
selectionchange:this.loadProject
},
“项目列表按钮[操作=添加]”:{
单击:this.addProject
},
“项目列表按钮[操作=删除]”:{
单击:this.removeProject
}
});
},
onLaunch:function(){
log(this.getProjectData());
var dataview=this.getProjectData(),
store=this.getProjectStore();
console.log(“Stoer=“+store”);
bindStore(store);
dataview.getSelectionModel().select(store.getAt(0));
},
loadProject:功能(选择selModel){
console.log(“加载项目”);
},
addProject:function(){
console.log(“添加项目”);
},
removeProject:function(){
console.log(“删除项目”);
},
});
下面是我的app/view/project/projectlist.js的代码

Ext.define('rt.view.project.projectlist'{
扩展:“Ext.panel.panel”,
别名:“widget.projectlist”,
需要:['Ext.toolbar.toolbar'],
标题:“项目”,
可折叠的:是的,
对,,
边距:“50 5”,
布局:“适合”,
initComponent:function(){
Ext.apply(本{
项目:[{
xtype:“数据视图”,
跟踪:是的,
商店:这个。商店,
cls:“项目列表”,
itemSelector:“.project列表项”,
overItemCls:“项目列表项悬停”,
tpl:“{name}”,
听众:{
selectionchange:this.onSelectionChange,
范围:本
}
}],
摘要:[{
xtype:'工具栏',
项目:[{
文本:“添加项目”,
操作:“添加”
}, {
文本:“删除项目”,
残疾人:对,,
操作:“删除”
}]
}]
});
this.callParent(参数);
},
onSelectionChange:功能(选择模型,选择){
选择的变量=选择[0],
button=this.down('button[action=remove]');
如果(选定){
按钮。启用();
}
否则{
按钮。禁用();
}
}
});
当我运行我的应用程序时,它显示以下错误

数据视图未定义

在第34行的controller/project.js文件中,如下所示

dataview.bindStore(存储);
在控制器代码中,似乎以下内容不起作用

参考文献:[
{ref:'projectList',选择器:'projectList'},
{ref:'projectData',选择器:'projectlist dataview'}
],
有人知道这是什么原因吗


如果您需要更多信息,请告诉我。

我在引用dataview时遇到类似问题。下面是我如何修改选择器字符串的:

{ref: 'projectData', selector: 'projectlist > dataview' }
这应该可以解决问题。但是我想问你什么
console.log(this.getProjectData())?此外,我没有看到projectStore的
ref
,因此您可以执行以下命令:

store = this.getProjectStore();

您是否错过了
refs
列表中的
projectStore
参考?

你好,Abdel,谢谢您的回复。看来我解决了。问题是应用程序初始化时“projectlist”视图不在视口中。我在点击我的桌面图标时启用它。所以我把事件放在我的控制器“projectlist”中:{render:this.onRenderList},然后在onRenderList函数中,我放上onLaunch函数的代码。所以现在看来,关于projectStore,它应该是自动创建的吗?我的app/store/project.js中有项目存储文件。我是从他们的示例文件夹中给出的提要查看器应用程序的示例中进行的。在这方面,他们并没有采取任何类似的ref,它似乎工作得很好。如果我错了,请告诉我。谢谢。。对我忽略了:)你是对的。。商店不需要ref