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 语法不是很熟悉,我不确定使用什么函数来做到这一点,显然更新函数不是那样的。

4

1 回答 1

1

我稍微改变了你的逻辑,但提供了一个我认为你正在尝试做的工作示例。

SenchaFiddle 与我在我的机器上运行的有点不同,但你应该能够理解。

加载的初始列表从您的商店获取数据,并且在 itemtap 上会将新视图推送到视口上。

您将需要添加一个导航按钮以从 view.View 返回列表,并为详细信息提供更好的布局。我建议使用自定义样式的嵌套容器或面板来获得恰到好处的细节。或者,您可以在其中放置一个完整的 html 片段,其中包含您想要的所有数据。

很乐意提供更多帮助。

小提琴:http ://www.senchafiddle.com/#XQNA8

于 2013-07-01T15:03:27.687 回答