2

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

ここで、このデータ (フィールド データ) をフォームのテキスト フィールドまたはボタン (またはこのような sth) に取得する方法を知りたいと思います。

誰かがデータをビュー/フォームに取り込む方法、またはビューを変更する方法(リストから詳細へ)のより良いアイデアを持っている場合は、私に知らせてください:)

4

1 に答える 1

0

ここにあなたのコードへのいくつかの提案があります:

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.店舗を利用する すでにレコードを渡しているので、選択したフィールドを店舗モデルに追加して、単純にフラグを設定することができます。

于 2016-03-19T20:03:17.833 に答える