3

我正在尝试从列表中加载项目披露的详细视图,但不使用 NavigationView 和“push()”命令。

控制器

Ext.define('App.controller.MyPlans', {
    extend: 'Ext.app.Controller',
    requires: ['App.view.EventDetail',
        'App.view.PlansContainer'],

    config: {
        refs: {

        },
        control: {
            'MyPlansList': {
                disclose: 'onDisclose'
            }
        }
    },

    onDisclose: function (view, record) {
        console.log("My Plans list disclosure " + record.get('id'));
        var eventDetailView = Ext.create('App.view.EventDetail');
        eventDetailView.setRecord(record);
        Ext.Viewport.setActiveItem(eventDetailView);
    }
});

看法:

Ext.define('App.view.EventDetail', {
    extend: 'Ext.Panel',
    xtype: 'EventDetail',

    config: {

        items: [{
            xtype: 'toolbar',
            docked: 'top',
            title: 'Event Name',
            items: [{
                xtype: 'button',
                id: 'addRunBackBtn',
                ui: 'back',
                text: 'Back'
            }]
        }, {
            xtype: 'panel',
            styleHtmlContent: true,
            itemTpl: [
                '<h1>{name}</h1>',
                '<h2>{location}</h2>',
                '<h2>{date}</h2>']
        }],

    }
});

我基本上是在尝试使用“setRecord()”命令将数据传递给视图,但视图中似乎没有加载任何内容。有什么想法吗??

谢谢

4

3 回答 3

1

而不是 ItemTpl,只写 Tpl。我怀疑没有列表 xtype 的 itemTpl 是否存在。

另一件事是将 Tpl 放入配置中:

{tpl:['<div class="ListItemContent">{descriptionddata}</div>']}

我之前/上面的答案很好,但是如果您打算将格式保留在视图中而不是在控制器中,则可以使用 setData 而不是 setRecord

detailview.setData({title:record.get('title'), description:record.get('descriptiondata')});
于 2012-11-16T07:18:34.020 回答
0

我在这里发现了问题:

面板没有 itemTpl

{
    xtype: 'panel',
    styleHtmlContent: true,
    itemTpl : [
        '<h1>{name}</h1>',
        '<h2>{location}</h2>',
        '<h2>{date}</h2>'
    ]
}

一种可能的方法是:

更改视图:

{
    xtype: 'panel',
    id: 'thePanel',
    styleHtmlContent: true
}

更改控制器:

onDisclose: function(me, record, target, index, e, eOpts) {
  ... 
  Ext.getCmp('thePanel').setHtml('<h1>'+record.get('name')+'</h1><h2>'+record.get('location')+'</h2><h2>'+record.get('date')'</h2>'); //For setting the Data
  ...
}

希望这会有所帮助!

于 2012-11-16T07:16:17.820 回答
0

而不是面板尝试列表如下

Ext.define('App.view.EventDetail', {
    extend: 'Ext.TabPanel',
    xtype: 'EventDetail',
    config: {
        items: [{
            xtype: 'toolbar',
            docked: 'top',
            title: 'Event Name',
            items: [{
                xtype: 'button',
                id: 'addRunBackBtn',
                ui: 'back',
                text: 'Back'
            }]
        }, {
            xtype: 'list',
            styleHtmlContent: true,
            itemTpl: [
                '<h1>{name}</h1>',
                '<h2>{location}</h2>',
                '<h2>{date}</h2>']
        }],
    }
});
于 2013-05-31T11:31:57.860 回答