1

このストアからビューを変更するときに、setActiveItem() でデータを送信したいと思います。

Ext.define('SkSe.store.Places',{
    extend:'Ext.data.Store',
    config:{
        autoDestroy: true,

        model:'SkSe.model.Places',

        //hardcoded data

        data: [
            {
                name: 'Caffe Bar XS', //naziv objekta
                icon: 'Icon.png', //tu bi trebala ići ikona kategorije kojoj pripada
                stamps: 'stamps1' //broj "stampova" koje je korisnik prikupio
            },
            {
                name: 'Caffe Bar Mali medo',
                icon: 'Icon.png',
                stamps: 'stamps2'
            },
            {
                name: 'Caffe Bar VIP',
                icon: 'Icon.png',
                stamps: 'stamps3'
            }
        ]

        //dynamic data (Matija)
        //remember to change the icon path in "Akcije.js -> itemTpl"

        /*proxy:{
            type:'ajax',
            url:'https://maps.googleapis.com/maps/api/place/search/json?location=-33.8670522,151.1957362&radius=500&types=food&name=harbour&sensor=false&key=AIzaSyCFWZSKDslql5GZR0OJlVcgoQJP1UKgZ5U',
            reader:{
                type:'json',
                //name of array where the results are stored
                rootProperty:'results'
            }
        }*/
    }
});  

これは、場所ストアからデータを取得する必要がある私の詳細コントローラーです。

Ext.define('SkSe.controller.Details', {
    extend: 'Ext.app.Controller',

    config: {

        refs: {
            placesContainer:'placesContainer',
            Details: 'details'
        },
        control: {
            //get me the list inside the places which is inside placesContainer
            'placesContainer places list':{
                itemsingletap:'onItemTap'
                //itemtap:'onItemTap'
            }

        }
    },

    onItemTap:function(list,index,target,record){

           console.log('omg');


        var addcontact= Ext.create('SkSe.view.Details',
            {
                xtype:'details',
                title:record.data.name,
                data:record.data
            });



        var panelsArray = Ext.ComponentQuery.query('details');
        console.log(panelsArray);
        Ext.Viewport.add(addcontact);
        addcontact.update(record.data.name);
        Ext.Viewport.setActiveItem(addcontact);
        console.log(record.data.name);
    }

});

上記のplaces.jsモデルから名前レコードを送信したいと思います。setActiveItem でデータを渡すことはできないが、ビューを更新する関数を作成する必要があると聞きました (いいえ、ここでは pop と push を使用できません)。

私は sencha touch の構文にあまり詳しくなく、それを行うためにどの関数を使用すればよいかわかりません。明らかに update 関数はそうではありません。

4

1 に答える 1

1

私はあなたのロジックを少し変えましたが、あなたがやろうとしていることの実例を提供しました。

SenchaFiddle は、私のマシンで実行しているものとは少し異なりますが、アイデアを得ることができるはずです。

ロードされた最初のリストはストアからデータを取得し、itemtap で新しいビューをビューポートにプッシュします。

view.View からリストに戻るためのナビゲーション ボタンを追加し、詳細のレイアウトを改善する必要があります。詳細を適切に表示するには、カスタム スタイルを使用してネストされたコンテナまたはパネルをお勧めします。または、必要に応じてすべてのデータを配置した完全な html スニペットをそこにドロップすることもできます。

さらにお役に立てば幸いです。

フィドル: http://www.senchafiddle.com/#XQNA8

于 2013-07-01T15:03:27.687 に答える