Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Extjs 如何使用Ext导航视图设置(标题)详细视图_Extjs_Sencha Touch - Fatal编程技术网

Extjs 如何使用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

使用Ext导航视图设置局部视图(标题)的正确方法是什么

第一次进近

在()中,控制器执行以下操作:

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);
       ..
    }
  }
});