1

我在选项卡面板的列表视图中有以下侦听器:

listeners: {
    itemtap: function (list, index, item, e) {
    var record = list.getStore().getAt(index);
    this.fireEvent('showListCommand', this, record);
}

这是我的控制器的配置:

config: {
    refs: {
        mainView: "mainview",
        activeLists: "activelists",
        listView: "listview"
        // I deleted some code for easier reading
    },
    control: {
        activeLists: {
            showListCommand: "onShowListCommand"
        }
    }
},

这是 onShowListCommand 函数和它调用的函数,都在控制器中:

onShowListCommand : function (list, record) {
    this.activateListView(record);
},

slideLeftTransition: { type: 'slide', direction: 'left' },

activateListView: function (record) {
    var listView = this.getListView();
    listView.setRecord(record);
    console.log(record.get('id'));
    Ext.Viewport.animateActiveItem(listView, this.slideLeftTransition);
},

控制台日志在这里按预期工作,它记录被点击的列表项的 id。我也知道 setRecord 函数有效,它在 listView 的表单文本字段内显示模型中的标题、id 和预算字段。

现在,我在过去 10 小时内试图成功的是将这些模型字段传递给 listView并能够在表单之外使用它们,例如在标题或 html 中。所以基本上我在选项卡面板中有一个列表,在 itemtap 上我使用 Ext.Viewport.animateActiveItem 显示另一个视图。

ListView 是“Ext.form.Panel”,它目前有一个工具栏和一个通过 initialize() 函数的字段集,但我想用一些普通的 html 替换字段集,但我不能在任何情况下使用来自 setRecord() 的数据方式。

4

2 回答 2

1

我解决了这个问题。主要问题是我试图显示尚未传递的数据,因为所有这些都在初始化函数中。我也想出了一种通过视口传递数据的方法。

下面是我的函数如何显示我想将数据传递给现在的视图:

activateListView: function (record) {
        Ext.Viewport.animateActiveItem( {xtype: 'listview', data: record.data}, {type: 'slide', direction: 'left'} );
    }

以下是我在视图中使用数据的方式:

var datafield = this.getData();
console.log(datafield .id);
于 2012-10-25T18:24:15.337 回答
0

我希望我正确地理解了你,但我不太确定这会对你有所帮助。

无论如何,在我的应用程序中,我有一个面板,该面板通过该函数从控制器中的侦听器函数 (onListTap) 进行更新setData()。这反过来updatedata在面板上/从面板上触发一个事件,该事件也在控制器中获取,然后用于更改面板子级。

updatedata 监听器示例:

onMyPanelUpdate: function(component, newdata, options) {
    var holder = component.child("#innerContainer");

    holder.child("#detailsText").setData(newData);
    holder.child("#detailImg").setSrc(newData.imgUrl);
    holder.child("#detailsTitle").setData(newData);
    holder.child("#extras").setHtml(newData.extraHtml);
}

希望这对您有所帮助,如果您需要其他帮助或我误解了您的问题,请返回评论。

于 2012-10-25T14:11:29.453 回答