在我的简单应用程序中,我正在听这样的disclose
事件:
在NotesList.js
(查看)文件中......
Ext.define("NotesApp.view.NotesList", {
extend : "Ext.dataview.List",
xtype : "noteslist",
...
config : {
onItemDisclosure : true, //adds the disclose arrow
}
});
NotesList在NotesListContainer中使用,它是Ext.Container
。
然后在NotesListContainer.js
(查看)......
var notesList = {
xtype : "noteslist",
...
listeneres : {
disclose : { fn : this.onNotesListDisclose, scope : this }
}
};
this.add([topToolbar, notesList]);
该功能执行此操作:
onNotesListDisclose : function(list, record, target, index, evt, options) {
console.log(' onNotesListDisclose() called'); //nevers gets logged
this.fireEvent('editNoteCommand', this, record);
}
然后在Notes.js
(控制器):
refs : {
//get elemets using xtype attr
notesListContainer : "noteslistcontainer",
noteEditor : "noteeditor"
},
//handlers for events
control : {
//define which events should this controller respond to
notesListContainer : {
//events fired by NotesListContainer
newNoteCommand : "onNewNoteCommand",
editNoteCommand : "onEditNoteCommand"
}
}
},
//Event/Command handler
onEditNoteCommand : function(list, record) {
console.log(' onEditNoteCommand called ');
this.activateNoteEditor(record);
}
我认为问题出现在我实例化列表的NotesListContainer.js中。 如果我在控制器中听这样的事件:
refs : {
//get elemets using xtype attr
notesListContainer : "noteslistcontainer",
notesList : "noteslistcontainer list",
},
//handlers for events
control : {
//define which events should this controller respond to
notesListContainer : {
//events fired by NotesListContainer
newNoteCommand : "onNewNoteCommand",
//editNoteCommand : "onEditNoteCommand"
},
notesList : {
disclose : "onEditNoteCommand" //adding it this way works...
}
}
它运作得很好。但是,我更愿意使用更具特定于应用程序的事件而不是非常通用的disclose
事件。
我是sencha touch的新手,感谢任何帮助。
答案 0 :(得分:1)
如果您想拥有自己的自定义业务逻辑驱动事件,请执行以下操作:
答案 1 :(得分:0)
你对“更具针对性的活动”的意思是什么?
披露事件是特定于列表组件的事件: http://docs.sencha.com/touch/2.2.1/#!/api/Ext.dataview.List-event-disclose