在 Sencha Touch 2 中填充视图

Posted

技术标签:

【中文标题】在 Sencha Touch 2 中填充视图【英文标题】:Populating View in Sencha Touch 2 【发布时间】:2013-01-17 02:56:27 【问题描述】:

我想做的是弄清楚如何将变量从控制器传递给视图。

例如,假设我有一个登录屏幕,我想在其中显示应用程序版本和其他一些自定义设备信息。我将如何将该信息传递到视图中?

Ext.define('MyApp.view.Login', 
    extend: 'Ext.form.Panel',
    xtype: 'loginform',
    config: 
        items: [
              
                 xtype: 'label', 
                 cls: 'appVersion', 
                 html: 'Version #:' + versionNumber 
             
        ]
    
);

如果我使用 tpl 而不是 html 会有多大不同?

感谢您的帮助!

【问题讨论】:

【参考方案1】:

在视图创建过程中,您始终可以像这样传递数据:

var loginPanel = Ext.create('MyApp.view.Login', 
    ver : versionNumber    // any value or data you want to pass
);

为此,您可能必须在视图的配置中定义 ver

Ext.define('MyApp.view.Login', 
  extend: 'Ext.form.Panel',
  xtype: 'loginform',
  config: 
    ver : '',  // Initialize with empty string
    items: [
          
             xtype: 'label', 
             cls: 'appVersion', 
             html: 'Version #:' + versionNumber 
         
    ]
  
);

使用所需值创建后,您可以将其添加到任何您想要的地方

Ext.Viewport.add(loginPanel);

【讨论】:

谢谢!这样可行。有没有其他方法可以将数据/变量从控制器传递到视图?例如,如果您构建了一些复杂的仪表板怎么办。您有一个具有多个视图和一些嵌套视图的控制器。假设您正在监视来自外部源的数据或在没有用户交互的情况下更改的数据。我将如何将这些变化反映到我的观点中?对于模型,任何更新都会触发“更改”事件。您可以使用更改事件来更新视图。使用控制器监控外部事物,如何更新视图?谢谢! 我不确定你监控是拉还是推,但无论如何你必须在回调函数中编写代码才能将变量传递给任何视图。单独传递一个变量将无助于查看它是否已经加载,因此如果它定期刷新,将数据传递到存储更有意义。无论如何要传递数据,您应该能够在控制器getLoginView().config.ver = newVersion 中执行类似的操作。由于这未经测试,我建议您在控制台中进行一些试验和错误。【参考方案2】:

您始终可以为此使用 PhoneGap (Cordova):http://docs.phonegap.com/en/2.3.0/cordova_device_device.md.html#Device

另外,使用 html 或 tpl 也可以。

【讨论】:

谢谢。我想我想问的是如何将数据从控制器传递到 Sencha Touch 2 中的视图。我想让我的视图保持“愚蠢”。因此,例如在控制器中使用 Cordova 收集任何信息,然后将该信息从控制器传递到视图中。在此示例中,我说的是应用程序版本,但我指的是一般数据。

以上是关于在 Sencha Touch 2 中填充视图的主要内容,如果未能解决你的问题,请参考以下文章

Sencha Touch 1.1 使用 Ajax 返回的内容填充 Ext.panel.html

sencha touch load store 手动

Sencha Touch filter dataview 存储和刷新列表

如何在 Sencha Touch 2 的列表后添加项目?

sencha touch 2 中未加载的项目

Sencha Touch : 刷新商店内容