1

在我的简单应用程序中,我正在监听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的新手,不胜感激。

4

2 回答 2

1

如果您想拥有自己的自定义业务逻辑驱动事件,请执行以下操作:

  • 在主控制器中订阅必要的 UI 事件
  • 生成应用程序范围的业务事件
  • 在您的视图控制器中订阅这些事件
于 2013-06-04T16:04:00.350 回答
0

你的意思是“一个更特定于应用程序的事件”?

披露事件是特定于列表组件的事件: http ://docs.sencha.com/touch/2.2.1/#!/api/Ext.dataview.List-event-disclose

于 2013-06-04T14:46:37.973 回答