javascript - setActiveItem() 传递数据 sencha touch

标签 javascript extjs sencha-touch-2

当从此商店进行 View 更改时,我想使用 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'
            }
        }*/
    }
});  

这是我的详细信息 Controller ,应该从地点存储中获取数据:

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 传递数据,但应该创建一个更新 View 的函数(不,我不能在这里使用 pop 和 push )。

我对 sencha touch 语法不太熟悉,我不确定使用什么函数来做到这一点,显然更新函数不是那个。

最佳答案

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

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

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

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

很乐意提供更多帮助。

fiddle :http://www.senchafiddle.com/#XQNA8

关于javascript - setActiveItem() 传递数据 sencha touch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17399875/

相关文章:

javascript - 添加初始化函数时 Sencha xtype 导航失败

extjs - 嵌套列表返回按钮 sencha touch 2

javascript - 用于编辑信息的 Ajax 国家/地区城市选择

javascript - import() 相当于 import { some } from 'somewhere' ;

javascript - Sencha Extjs - 如何通过一次设置记录中的数据来更新网格?

javascript - Extjs 4.1 加载后从组合框中删除元素

web-applications - 使用 Play 框架和 sencha 的 Web 应用程序

javascript - 如何在查询中从表中获取属性?

javascript - 如何在 Javascript SDK 中从 Deezer 队列中删除歌曲?

javascript - 当我点击删除时,ExtJs 为每个项目发送多个 XHR 请求