【问题标题】:setActiveItem() passing data sencha touchsetActiveItem() 传递数据 sencha touch
【发布时间】:2013-07-01 08:06:58
【问题描述】:

我想在从该商店更改视图时使用 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 语法不是很熟悉,我不确定使用什么函数来做到这一点,显然更新函数不是那个。

【问题讨论】:

    标签: javascript extjs sencha-touch-2


    【解决方案1】:

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

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

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

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

    很乐意提供更多帮助。

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

    【讨论】:

      猜你喜欢
      • 2011-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多