【问题标题】:Sencha Touch 2: Loading pushed data into formSencha Touch 2:将推送的数据加载到表单中
【发布时间】:2012-07-04 10:48:27
【问题描述】:

我在将数据加载到我推送 onSelect 的表单中时遇到了一些问题。 (加载特定列表项的详细信息)

onProductSelect: function(_dataView, _record)
{
    Ext.getCmp('products').push({
        title: _record.data.name,
        data: _record.data,
        styleHtmlContent: true,
        xtype: 'productDetails'
    });
}   

我正在将另一个视图 (productDetails) 推送到我的 productView(它是一个 navigationView)上。数据 (_record.data) 可通过

在新推送的视图中使用
tpl: '{someField}'

现在我想知道如何将这些数据(字段数据)放入表单的文本字段或按钮(或类似的东西)中。

如果有人对如何将数据放入视图/表单或如何更改视图(从列表到详细信息)有更好的了解,请告诉我 :)

【问题讨论】:

  • 您是否要在列表中的项目正下方显示按钮?还是您在列表下方添加项目?

标签: forms sencha-touch-2 push


【解决方案1】:

以下是对您的代码的一些建议:

1. 在 Sencha Touch 中使用下划线 ('_') 用于具有 get/set/apply/update 的变量。尽管您使用的是局部变量,但这是最佳做法。

2. '_record' 这个词希望是一个记录。如果是这样,那么您应该使用:

name = _record.get('name');
data = _record.getData();

填写表单的最佳方法是使用表单面板并将值添加到表单面板中,同时所有字段都分配有一个弹出器名称:

如果您的数据是:

data = {name: 'Kurt001', password: '12er51wfA!'}

你可以用这个:

Ext.define('App.view.ProductDetails', {
    extend: 'Ext.form.Panel',
    xtype: 'productdetails',

    config: {
        cls: 'product-details',
        scrollable: null,
        layout: 'vbox',

        defaults: {
            labelAlign: 'top',
            clearIcon: false
        },

        items: [{
            xtype: 'textfield',
            name: 'name'
        }, {
            xtype: 'passwordfield',
            name: 'password'
        }, {
            xtype: 'button',
            itemId: 'btnLogin'
        }]
    }
});

要添加数据,只需使用:

Ext.Viewport.down('.productdetails').setValues(data);

替代方案:

var view = Ext.Viewport.down('.productdetails')
view.down('.textfield').setValue(data.name);
view.down('.passwordfield').setValue(data.password);

另类

view.down('.field[name=name]').setValue(data.name);
view.down('.field[name=password]').setValue(data.password);

要将数据从一个视图获取到下一个视图,您可以采用不同的选项:

1.将数据设置到当前视图并从该视图中获取它们。看起来你有一个清单。所以你可以将数据应用到列表中:

view.down('.list').myData = data;

扩展版本是在配置中使用 myData 创建一个自定义列表。 这样你就可以使用:

view.down('.list').setMyData(data);

或者在你的情况下

_dataview.setMyData(data);

2.使用商店。当您已经在传递一条记录时,您可能希望将选定的字段添加到您的商店模型中并简单地设置标志。

【讨论】:

    猜你喜欢
    • 2012-07-22
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    • 2013-08-21
    相关资源
    最近更新 更多