我在选项卡面板的列表视图中有以下监听器:
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中的数据( )无论如何。
答案 0 :(得分:1)
我解决了这个问题。主要问题是我试图显示尚未传递的数据,因为所有这些都在初始化函数中。我找到了一种通过视口传递数据的方法。
这是我的函数如何显示我想要传递数据的视图现在看起来:
activateListView: function (record) {
Ext.Viewport.animateActiveItem( {xtype: 'listview', data: record.data}, {type: 'slide', direction: 'left'} );
}
以下是我在视图中使用数据的方式:
var datafield = this.getData();
console.log(datafield .id);
答案 1 :(得分:0)
我希望我能正确理解你,但我不确定这会对你有所帮助。
无论如何,在我的应用程序中,我有一个面板,通过setData()
函数从控制器中的侦听器函数(onListTap)进行更新。
这反过来在面板上触发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);
}
希望这对您有所帮助,如果您需要其他帮助或者我误解了您的问题,请回复评论。