我按照本教程学习了如何使用Sencha Touch 2和Architect以及ASP.NET MVC 4 WebApi后端:https://vimeo.com/45207356#一切正常但很简单。一旦我从详细信息表单返回,itemtap事件列表器似乎不再起作用。无论我是保存,删除还是只是点击后退按钮,只要我回到主视图(列表中的那个),我就无法再次进入编辑表单。这是主视图代码:
Ext.define('ClientTestApi.view.Main', {
extend: 'Ext.navigation.View',
config: {
id: 'Main',
items: [
{
xtype: 'list',
title: 'Songs',
id: 'ListePieces',
itemTpl: [
'<div>{Title}, {Artist}, {Album}, {Genre}, {Year}</div>'
],
loadingText: 'Chargement...',
store: 'PieceStore'
}
]
}
});
控制器:
Ext.define('ClientTestApi.controller.PieceSimple', {
extend: 'Ext.app.Controller',
config: {
refs: {
mainView: '#Main',
formPiece: '#FormPiece',
listePieces: '#ListePieces'
},
control: {
"#ListePieces": {
itemtap: 'onListItemTap'
}
}
},
onListItemTap: function(dataview, index, target, record, e, options) {
var form = Ext.create('ClientMusiqueApi.view.FormPiece',
{
title: record.data.Titre
});
this.getMainView().push(form);
form.setRecord(record);
}
我省略了保存和删除代码,因为当您只是点击后退按钮而没有做任何事情时,行为也会发生。
因此,当我加载应用程序时,每个人都可以使用。我点击一个项目并进入编辑表单(“FormPiece”)。当我返回时(例如导航栏中的后退按钮),列表显示确定,单击它们时选择了项目,但这次没有打开编辑表单。有谁知道为什么?
更新:在一个简单的测试之后(我在onListItemTap事件中放了一个警告),我看到即使我回来后事件也被触发了。问题似乎与“push()”方法有关。但是当我在Chrome的控制台中跟踪它时,它运行正常。它没有明显的原因显示编辑表格。
答案 0 :(得分:2)
所有那些想把名单放在sencha中并且听众没有在列表中工作的人不要忘记查看你正在扩展的内容,看看下面的代码并安静地休息,因为我花了5天时间来解决这个问题。我无处可寻找代码中丢失的内容,,,所以缺少的片段是“extend:'Ext.navigation.View':
Ext.define('iPhoneTestApp.view.Inbox', {
extend: 'Ext.navigation.View',
xtype: 'inbox',
inline: true,
requires: [ 'Ext.*','Ext.dataview.List' ],
config: {
items : [{
xtype: 'list',
inline: true,
id:'list',
itemTpl: '<div class="contact">{title} </div>',
data: [
{ title: 'Item 1' },
{ title: 'Item 2' },
{ title: 'Item 3' },
{ title: 'Item 4' }
],
fullscreen: true,
listeners: {
itemtap: function(el){
Ext.Msg.alert('Warning', '3', Ext.emptyFn);
}
}
}]
}
});
答案 1 :(得分:0)
原来问题是编辑表单本身。我在表单中添加了记录“id”字段,它似乎是导致错误的原因。因此,如果您按原样关注视频,它就会起作用。