【问题标题】:How to send data in sencha between 2 views如何在 2 个视图之间发送 sencha 中的数据
【发布时间】:2013-12-04 15:02:48
【问题描述】:

我正在学习煎茶,我无法在两个视图之间进行数据传输。我有 2 个视图。第一个视图有数据列表。当 datalist 项目单击我打开另一个视图时。我需要将列表项值发送到第二个视图。

谁能帮帮我?

第一个视图。

Ext.define('griddeneme.view.pnlAna', {
extend: 'Ext.Panel',
alias: 'widget.pnlana',

requires: [
    'Ext.XTemplate'
],

config: {
    layout: {
        type: 'vbox'
    },
    items: [
        {
            xtype: 'panel',
            flex: 1,
            style: 'background-color:#81BEF7',
            items: [
                {
                    xtype: 'button',
                    docked: 'left',
                    height: 15,
                    itemId: 'mybutton1',
                    style: 'margin-Top',
                    ui: 'decline',
                    text: 'Çıkış'
                }
            ]
        },
        {
            xtype: 'panel',
            flex: 9,
            layout: {
                type: 'vbox'
            },
            items: [
                {
                    xtype: 'list',
                    flex: 1,
                    itemId: 'mylist',
                    itemTpl: [
                        '<div>{ad} - {yazar}</div>'
                    ],
                    store: 'strYazarlar'
                }
            ]
        }
    ],
    listeners: [
        {
            fn: 'onMybutton1Tap',
            event: 'tap',
            delegate: '#mybutton1'
        },
        {
            fn: 'onMylistItemTap',
            event: 'itemtap',
            delegate: '#mylist'
        }
    ]
},

onMybutton1Tap: function(button, e, eOpts) {

    var pnlAna = Ext.create('griddeneme.view.pnlGiris');



    Ext.Viewport.setActiveItem(pnlAna);
},

onMylistItemTap: function(dataview, index, target, record, e, eOpts) {
    //alert(record.data.ad);

    var Details=Ext.create('griddeneme.view.pnlDetail');
        Details.setData(record);

    Ext.Viewport.setActiveItem(Details);
}

});

第二个视图

Ext.define('griddeneme.view.pnlDetail', {
extend: 'Ext.Panel',
alias: 'widget.pnldetail',

config: {
    layout: {
        type: 'vbox'
    },
    items: [
        {
            xtype: 'panel',
            flex: 1,
            style: 'background-color:#81BEF7',
            items: [
                {
                    xtype: 'button',
                    docked: 'left',
                    height: 15,
                    ui: 'back',
                    text: 'Geri'
                }
            ]
        },
        {
            xtype: 'panel',
            flex: 8,
            itemId: 'mypanel7',
            style: '',
            items: [
                {
                    xtype: 'label',
                    html: 'Kitap Adı:',
                    id: '',
                    minWidth: 150,
                    style: 'color:green; float:left'
                },
                {
                    xtype: 'label',
                    html: 'f',
                    id: 'lblAd'
                },
                {
                    xtype: 'label',
                    html: 'Yazar:',
                    minWidth: 150,
                    style: 'float:left;color:green;'
                },
                {
                    xtype: 'label',
                    html: 'ggg',
                    id: 'lblKitap'
                }
            ],
            listeners: [
                {
                    fn: function(component, eOpts) {
                        alert(record.data.ad);
                    },
                    event: 'initialize'
                }
            ]
        }
    ]
}

});

【问题讨论】:

  • 您要发送到另一个视图的具体内容是什么?我看到您正在尝试创建 Panel 并使用 setData 方法?这没有意义。

标签: javascript extjs scope


【解决方案1】:
Ext.define('griddeneme.view.pnlDetail', {
extend: 'Ext.Panel',
alias: 'widget.pnldetail',

config: {
    someData: null,
    ...

在实例化您的 pnlDetail 时:

onMylistItemTap: function(dataview, index, target, record, e, eOpts) {

    var Details=Ext.create('griddeneme.view.pnlDetail',{
        someData: // here you can set your data
    });

    Ext.Viewport.setActiveItem(Details);
}

【讨论】:

  • 感谢 michel,但我无法在 pnldetail 中添加 someData 变量。我该怎么办?
  • 如果将 someData 属性添加到面板配置中会发生什么?
  • itemtap: var Details=Ext.create('griddeneme.view.pnlDetail',{data : record.getData()}); Ext.Viewport.setActiveItem(Details);面板初始化; var 数据=this.config.data;警报(数据。广告);我写了它和它的工作。是真的吗?
猜你喜欢
  • 1970-01-01
  • 2020-05-23
  • 1970-01-01
  • 2010-09-14
  • 1970-01-01
  • 2012-01-13
  • 2017-11-03
  • 2019-07-20
  • 2012-12-17
相关资源
最近更新 更多