4

我仍在尝试完成本教程,但取得了好坏参半。在我的控制器脚本中,我有以下内容:

config: {
        refs: {
            notesListContainer: 'noteslistcontainer',
            noteEditor: 'noteeditor'
        },
        control: {
            notesListContainer: {
                newNoteCommand: 'onNewNoteCommand',
                editNoteCommand: 'onEditNoteCommand'
            }
        }
},
onEditNoteCommand: function(list, record) {
    console.log('onEditNoteCommand');

    this.activateNoteEditor(record);
},
activateNoteEditor: function(record) {
        var noteEditor = this.getNoteEditor();
        noteEditor.setRecord(record);
        Ext.Viewport.animateActiveItem(noteEditor, this.slideLeftTransition);
},

当我在 Chromium 18.0.1025.168 中运行它时,我得到

Uncaught TypeError: Cannot call method 'setRecord' of undefined Notes.js:37`. 
`this.getNoteEditor()' 

不返回 noteEditor,但返回 undefined。

整个项目的源代码可在此处获得。

4

1 回答 1

7

重要的是使用 autoCreated 指定 refautoCreate : true

config: {
    refs: {
        notesListContainer: 'noteslistcontainer',
        noteEditor: {
                 selector: 'noteeditor',
                 xtype: 'noteeditor',
                 autoCreate: true // missing
            }
        },
    },
...
}
于 2012-07-09T16:58:30.820 回答