Sencha Touch 2:将推送数据加载到表单中

时间:2012-07-04 10:48:28

标签: forms sencha-touch-2 push

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

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}'

现在我想知道如何将这些数据(字段数据)放到表单的文本字段或按钮(或者像这样)中。

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

1 个答案:

答案 0 :(得分:0)

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

1.使用Sencha Touch中的下划线(' _')是为了获取/设置/应用/更新的变量。虽然您使用局部变量,但这是最佳实践。

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

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

填写表单的最佳方法是使用formpanel并将值添加到formpanel,而所有字段都分配了popper名称:

如果您的数据是:

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.使用商店。当您传递记录时,您可能希望将选定字段添加到商店模型中,只需设置标记。