ExtJS 4 - 无法在控制器中获得对我的商店的引用

时间:2014-05-14 13:31:48

标签: extjs controller store

我无法在我的控制器内使用吸气器进入我的商店。我必须使用全名(' ExtMVC.store.Contatos'而不仅仅是' Contatos')否则应用程序崩溃...但使用全名我可以'使用框架生成的getter(getContatosStore)。这是我的控制器:

控制器/ Contacts.js

Ext.define('ExtMVC.controller.Contacts', {
extend: 'Ext.app.Controller',

models: ['Contatos'],
stores: ['ExtMVC.store.Contatos'],
views: ['ContatosGrid'],
refs: [
    {
        ref: 'contatosgrid',
        selector: 'grid',
        xtype: 'gridpanel'
    }
],
init: function() {
    this.control({
        'contatosgrid dataview': {
            itemdblclick: this.editarContato
        },
        'contatosgrid button[action=add]': {
            click: this.editarContato
        },
        'contatosgrid button[action=delete]': {
            click: this.deleteContato
        },
        'contatoform button[action=save]': {
            click: this.updateContato
        }
    });
},
editarContato: function(grid, record) {
    var edit = Ext.create('ExtMVC.view.contato.Formulario').show();

    if (record) {
       edit.down('form').loadRecord(record);
    }
},
updateContato: function(button) {
    var win = button.up('window'),
        form = win.down('form'),
        record = form.getRecord(),
        values = form.getValues();

    var novo = false;

    if (values.id > 0) {
        record.set(values);
    } else {
        record = Ext.create('ExtMVC.model.Contato');
        record.set(values);
        this.getContatosStore().add(record);
        novo = true;
    }

    win.close();
    this.getContatosStore().sync();

    if (novo) { //faz reload para atualziar
        this.getContatosStore().load();
    }
},
deleteContato: function(button) {

    var grid = this.getContatosGrid(),
        record = grid.getSelectionModel().getSelection(),
        store = this.getContatosStore();

    store.remove(record);
    this.getContatosStore().sync();

    //faz reload para atualziar
    this.getContatosStore().load();
}

});

我可以使用他们的名字声明的视图和模型,一切都很好。我也尝试在Application.js中声明我的商店,但无济于事。任何sugestions? TNX。

1 个答案:

答案 0 :(得分:0)

首先,使用短商店名称,而不是完整的类名。然后检查控制台输出是否有任何错误并修复它们,如果是的话。