Extjs 如何使用Ext导航视图设置(标题)详细视图
使用Ext导航视图设置局部视图(标题)的正确方法是什么 第一次进近 在()中,控制器执行以下操作:Extjs 如何使用Ext导航视图设置(标题)详细视图,extjs,sencha-touch,Extjs,Sencha Touch,使用Ext导航视图设置局部视图(标题)的正确方法是什么 第一次进近 在()中,控制器执行以下操作: this.getMain().push({ xtype: 'presidentdetail', title: record.fullName(), data: record.getData() }); 并且是带有tpl的常规Ext.Panel 第二次进近 然而,Sencha Touch下载(代码)附带的应用程序采用了完全不同的方法。在这里,控制器基本上是这样做的 this.showC
this.getMain().push({
xtype: 'presidentdetail',
title: record.fullName(),
data: record.getData()
});
并且是带有tpl的常规Ext.Panel
第二次进近
然而,Sencha Touch下载(代码)附带的应用程序采用了完全不同的方法。在这里,控制器基本上是这样做的
this.showContact = Ext.create('AddressBook.view.contact.Show');
this.showContact.setRecord(record);
this.getMain().push(this.showContact);
细节视图包含了很多我还不理解的代码
混乱
对于像我这样的Sencha/Ext新手来说,这让人困惑。一种方法比另一种方法有什么优势?他们的成就有什么不同
第一种方法更新控制器中局部视图的标题(实际上是导航栏中的标题)。我还没有发现如何使用第二种方法来做同样的事情。有什么提示吗?查看xtype上的文档:显式和即时对象创建与延迟创建之间的区别。但是,由于两者都发生在控制器的上下文中,我可以想象它们的行为几乎完全相同。RE:设置标题,您可以在第二个示例中执行完全相同的操作,如下所示:this.showContact=Ext.create('AddressBook.view.contact.Show',{title:'sometitleher'});感谢您的宝贵反馈。在我添加了你的标题修复后,我意识到这两种方法本质上是不同的(除了你指出的)。在上面发布的第二次进近控制器代码片段中,我遗漏了一个关键元素。控制器存储对已创建细节视图的引用,并且仅当其为空时才执行
Ext.create
。在所有其他情况下,它只执行setRecord
,这就是视图本身覆盖updateRecord
函数的原因。因此,您的标题修复只在第一次起作用。我要么每次都需要实例化视图,要么找到不同的解决方案。
Ext.define('AddressBook.view.contact.Show', {
extend: 'Ext.Container',
...
config: {
title: 'Information',
baseCls: 'x-show-contact',
layout: 'vbox',
items: [
{
id: 'content',
tpl: ...
},
...
},
updateRecord: function (newRecord) {
if (newRecord) {
this.down('#content').setData(newRecord.data);
..
}
}
});