javascript - Extjs 5 Cannot read property 'isBufferedStore' of undefined - Stack Overflow

Hi I am in trouble with extjs 5 mvvm example. My store isn't recognized. I tried similliar solutio

Hi I am in trouble with extjs 5 mvvm example. My store isn't recognized. I tried similliar solutions from stack but it still crashing.

Project structure: structure

Code:

Message.js

Ext.define('Tgis.view.message.Message', {
extend : 'Ext.window.Window',
title: 'Wiadomosci',
requires : ['Tgis.view.message.MessageController'],
store: 'MessageStore',
alias : 'widget.message',

config : {
    minHeight: 320,
    minWidth:400,
    bodyPadding : 10,
    width : 500,
    ghost : false,
    bodyPadding : 10,
    autoShow : true     
},
items: [{
    xtype:'panel',
    layout : 'vbox',
        items : [
            { 
                xtype : 'mvvm-DateView' ,
                flex  : 1
            },
            { 
                xtype : 'mvvm-MessageView',
                flex  : 5
            }]
}]});

Messagedate.js

 Ext.define('Tgis.view.message.MessageDate', {
extend : 'Ext.grid.Panel',
xtype  : 'mvvm-DateView',



store : 'MessageStore',

columns: [
    { 
        text      : 'Data',  
        dataIndex : 'date' 
    }
]});

MessageMaster.js

 Ext.define('Tgis.view.message.MessageMaster', {
extend : 'Ext.form.Panel',
xtype  : 'mvvm-MessageView',

requires : [

    'Tgis.view.message.MessageViewModel'
],

title   : 'Wiadomosci',
frame   : true,
padding : 10,

viewModel : {
    type : 'detailform'  // references DetailViewModel
},

items : [
    {
        xtype      : 'textfield',
        bind       : '{rec.message}',
        fieldLabel : 'Tresc:'
    },
    {
        xtype : 'hiddenfield',
        bind  : '{rec.id}'
    }
]});

MessageModel.js

Ext.define('Tgis.view.message.MessageModel', {
extend : 'Ext.data.Model',
fields : [
    {
        name : 'date',
        type : 'date'
    },
    {
        name : 'message',
        type : 'string'
    },
    {
        name : 'id',
        type : 'integer'
    }
]});



Ext.define('Tgis.view.message.MessageStore', {
extend  : 'Ext.data.Store',

model   : 'Tgis.view.message.MessageModel',
storeId: 'MessageStore',
data : [
    { 
        'date'  : '28.05.1994',  
        'message' : '[email protected]',
        'id' : '1'
    }
]});

MessageController.js

Ext.define('Tgis.view.message.MessageController', {
extend : 'Ext.app.Controller',


init: function() {
     this.control({
         'mvvm-DateView': {
             select : this.onGridSelect
         }
     });
 },

onGridSelect : function(grid, record, index, eOpts) {
    // grab a reference to the Detail view... 
    // we could have used a controller "ref", but those can also be problematic
    var detailView = Ext.ComponentQuery.query('mvvm-DateView')[0];

    //set the form's ViewModel binding
    detailView.getViewModel().setData({ rec: record });
}});

MessageViewModel.js

 Ext.define('Tgis.view.message.MessageViewModel', {
extend: 'Ext.app.ViewModel',

alias: 'viewmodel.detailform',

data : {
    rec : null
}});

Main.js

xtype: 'app-main',

controller: 'main',
viewModel: {
    type: 'main'
},

layout: {
    type: 'border'
},

items: [{
    xtype: 'panel',
    bind: {
        title: '{name}'
    },
    region: 'west',
    width: 250,
    split: true,
    defaultType : 'button',
    layout : 'vbox',
    items : [{
        text : 'Wiadomości',
        handler : 'onClickMessages'
    },{
        text : 'Wyczyść LC',
        handler : 'onClearMessages'
    }]
},{
    region: 'center',
    xtype: 'tabpanel',
    items:[{
        title: 'Tab 1',
        html: '<h2>Content appropriate for the current navigation.</h2>'
    }]
}]});

MainController.js

Ext.define('Tgis.view.main.MainController', {
extend: 'Ext.app.ViewController',
alias: 'controller.main',


onClickButton: function () {
    Ext.Msg.confirm('Confirm', 'Are you sure?', 'onConfirm', this);
},
onConfirm: function (choice) {
    if (choice === 'yes') {
        //
    }
},

onClickMessages : function(button) {
    Ext.Ajax.request({
        url : 'http://localhost:8080/Messagess/res',
        method : 'GET',
        success : function(response) {
            var json = Ext.decode(response.responseText);
            //var itemsArray = new Array();
            /*for (var i = 0; i < json.data.length; i++) {
                var date = new Date(json.data[i].date);
                        var messageTxt = Ext.create('Ext.form.field.TextArea', {
                        fieldLabel :date.toLocaleString(),
                        value : json.data[i].message,
                        editable : false,
                        grow : true,
                        width : '100%'
                    });
                if (localStorage.getItem('date') != 'null')
                    itemsArray.push(messageTxt);
            }

            var checkbox = Ext.create('Ext.form.field.Checkbox', {
                    id : 'checkboxmessage',
                    boxLabel : 'Nie pokazuj ponownie'
                });
            itemsArray.push(checkbox);*/
            Ext.create('Tgis.view.message.Message', {
                //messagess: json.data
                    //Ext.getCmp('usernameID').setValue('JohnRambo');
                        /*items: itemsArray,
                            buttons : [{
                            xtype : 'button',
                            text : 'Zamknij',
                            handler : 'onCloseClick'
                        }]*/

                    })
        }
    });
},

onClearMessages : function(button) {
    localStorage.setItem('date', '0');
}});

MainModel.js

Ext.define('Tgis.view.main.MainModel', {
extend: 'Ext.app.ViewModel',

alias: 'viewmodel.main',

data: {
    name: 'Tgis'
}});

Hi I am in trouble with extjs 5 mvvm example. My store isn't recognized. I tried similliar solutions from stack but it still crashing.

Project structure: structure

Code:

Message.js

Ext.define('Tgis.view.message.Message', {
extend : 'Ext.window.Window',
title: 'Wiadomosci',
requires : ['Tgis.view.message.MessageController'],
store: 'MessageStore',
alias : 'widget.message',

config : {
    minHeight: 320,
    minWidth:400,
    bodyPadding : 10,
    width : 500,
    ghost : false,
    bodyPadding : 10,
    autoShow : true     
},
items: [{
    xtype:'panel',
    layout : 'vbox',
        items : [
            { 
                xtype : 'mvvm-DateView' ,
                flex  : 1
            },
            { 
                xtype : 'mvvm-MessageView',
                flex  : 5
            }]
}]});

Messagedate.js

 Ext.define('Tgis.view.message.MessageDate', {
extend : 'Ext.grid.Panel',
xtype  : 'mvvm-DateView',



store : 'MessageStore',

columns: [
    { 
        text      : 'Data',  
        dataIndex : 'date' 
    }
]});

MessageMaster.js

 Ext.define('Tgis.view.message.MessageMaster', {
extend : 'Ext.form.Panel',
xtype  : 'mvvm-MessageView',

requires : [

    'Tgis.view.message.MessageViewModel'
],

title   : 'Wiadomosci',
frame   : true,
padding : 10,

viewModel : {
    type : 'detailform'  // references DetailViewModel
},

items : [
    {
        xtype      : 'textfield',
        bind       : '{rec.message}',
        fieldLabel : 'Tresc:'
    },
    {
        xtype : 'hiddenfield',
        bind  : '{rec.id}'
    }
]});

MessageModel.js

Ext.define('Tgis.view.message.MessageModel', {
extend : 'Ext.data.Model',
fields : [
    {
        name : 'date',
        type : 'date'
    },
    {
        name : 'message',
        type : 'string'
    },
    {
        name : 'id',
        type : 'integer'
    }
]});



Ext.define('Tgis.view.message.MessageStore', {
extend  : 'Ext.data.Store',

model   : 'Tgis.view.message.MessageModel',
storeId: 'MessageStore',
data : [
    { 
        'date'  : '28.05.1994',  
        'message' : '[email protected]',
        'id' : '1'
    }
]});

MessageController.js

Ext.define('Tgis.view.message.MessageController', {
extend : 'Ext.app.Controller',


init: function() {
     this.control({
         'mvvm-DateView': {
             select : this.onGridSelect
         }
     });
 },

onGridSelect : function(grid, record, index, eOpts) {
    // grab a reference to the Detail view... 
    // we could have used a controller "ref", but those can also be problematic
    var detailView = Ext.ComponentQuery.query('mvvm-DateView')[0];

    //set the form's ViewModel binding
    detailView.getViewModel().setData({ rec: record });
}});

MessageViewModel.js

 Ext.define('Tgis.view.message.MessageViewModel', {
extend: 'Ext.app.ViewModel',

alias: 'viewmodel.detailform',

data : {
    rec : null
}});

Main.js

xtype: 'app-main',

controller: 'main',
viewModel: {
    type: 'main'
},

layout: {
    type: 'border'
},

items: [{
    xtype: 'panel',
    bind: {
        title: '{name}'
    },
    region: 'west',
    width: 250,
    split: true,
    defaultType : 'button',
    layout : 'vbox',
    items : [{
        text : 'Wiadomości',
        handler : 'onClickMessages'
    },{
        text : 'Wyczyść LC',
        handler : 'onClearMessages'
    }]
},{
    region: 'center',
    xtype: 'tabpanel',
    items:[{
        title: 'Tab 1',
        html: '<h2>Content appropriate for the current navigation.</h2>'
    }]
}]});

MainController.js

Ext.define('Tgis.view.main.MainController', {
extend: 'Ext.app.ViewController',
alias: 'controller.main',


onClickButton: function () {
    Ext.Msg.confirm('Confirm', 'Are you sure?', 'onConfirm', this);
},
onConfirm: function (choice) {
    if (choice === 'yes') {
        //
    }
},

onClickMessages : function(button) {
    Ext.Ajax.request({
        url : 'http://localhost:8080/Messagess/res',
        method : 'GET',
        success : function(response) {
            var json = Ext.decode(response.responseText);
            //var itemsArray = new Array();
            /*for (var i = 0; i < json.data.length; i++) {
                var date = new Date(json.data[i].date);
                        var messageTxt = Ext.create('Ext.form.field.TextArea', {
                        fieldLabel :date.toLocaleString(),
                        value : json.data[i].message,
                        editable : false,
                        grow : true,
                        width : '100%'
                    });
                if (localStorage.getItem('date') != 'null')
                    itemsArray.push(messageTxt);
            }

            var checkbox = Ext.create('Ext.form.field.Checkbox', {
                    id : 'checkboxmessage',
                    boxLabel : 'Nie pokazuj ponownie'
                });
            itemsArray.push(checkbox);*/
            Ext.create('Tgis.view.message.Message', {
                //messagess: json.data
                    //Ext.getCmp('usernameID').setValue('JohnRambo');
                        /*items: itemsArray,
                            buttons : [{
                            xtype : 'button',
                            text : 'Zamknij',
                            handler : 'onCloseClick'
                        }]*/

                    })
        }
    });
},

onClearMessages : function(button) {
    localStorage.setItem('date', '0');
}});

MainModel.js

Ext.define('Tgis.view.main.MainModel', {
extend: 'Ext.app.ViewModel',

alias: 'viewmodel.main',

data: {
    name: 'Tgis'
}});
Share Improve this question asked Apr 5, 2016 at 18:24 HabababaHabababa 111 silver badge7 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 3

Call store like this in view solved in my project

store: {
    type: 'MessageStore'
}

You have defined a "store template" but not created a store instance.

If you want to create multiple stores of that type (e.g. one for each grid), do it like this:

xtype:'grid',
store:Ext.create('MyApp.store.SomeStore',{
    ...
}),

If you only want a single store of that type, just add the store to stores:[] array in Application.js and it should work.

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745363274a4624457.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信