2012-02-04 28 views
0

您好我设法执行writer.js,我得到一个错误: 遗漏的类型错误:对象#有没有方法“读”使用store proxy API的Extjs; CRUD

这里是我的代码片段,并希望这个问题的任何帮助:

Ext.onReady(function(){ 

var store = Ext.create('Ext.data.Store', { 
    model: 'User', 
    autoLoad: true, 
    autoSync: true, 
    proxy: { 
     type: 'ajax', 
     api: { 
      read: '/orm_2/view/user/app/remote/app/controllers/users.php?action=view', 
      create: '/orm_2/view/user/app/remote/app/controllers/users.php?action=create', 
      update: '/orm_2/view/user/app/remote/app/controllers/users.php?action=update', 
      destroy: '/orm_2/view/user/app/remote/app/controllers/users.php?action=destroy' 
     }, 
     reader: { 
      type: 'json', 
      successProperty: 'success', 
      root: 'USERS', 
      messageProperty: 'message' 
     }, 
     writer: { 
      type: 'json', 
      writeAllFields: true, 
      root: 'USERS' 
     }, 
     listeners: { 
      exception: function(proxy, response, operation){ 
       Ext.MessageBox.show({ 
        title: 'REMOTE EXCEPTION', 
        msg: operation.getError(), 
        icon: Ext.MessageBox.ERROR, 
        buttons: Ext.Msg.OK 
       }); 
      } 
     } 
    }, 
    listeners: { 
     write: function(proxy, operation){ 
      if (operation.action == 'destroy') { 
       main.child('#form').setActiveRecord(null); 
      } 
      Ext.example.msg(operation.action, operation.resultSet.message); 
     } 
    } 
}); 

var main = Ext.create('Ext.container.Container', { 
    padding: '0 0 0 20', 
    width: 500, 
    height: 450, 
    renderTo: document.body, 
    layout: { 
     type: 'vbox', 
     align: 'stretch' 
    }, 
    items: [{ 
     itemId: 'form', 
     xtype: 'writerform', 
     height: 150, 
     margins: '0 0 10 0', 
     listeners: { 
      create: function(form, data){ 
       store.insert(0, data); 
      } 
     } 
    }, { 
     itemId: 'grid', 
     xtype: 'writergrid', 
     title: 'User List', 
     flex: 1, 
     store: 'UserStore', 
     listeners: { 
      selectionchange: function(selModel, selected) { 
       main.child('#form').setActiveRecord(selected[0] || null); 
      } 
     } 
    }] 
}); 
}); 

回答

0

我在装入商店之前没有初始化我的模型时遇到了此错误。所以,在我的情况做一个Ext.create(“my.model”)或加入我的模式,以要求财产固定此错误:

"Uncaught TypeError: Object # has no method 'read'".

它看起来像你的模型被称为“用户”,在创建之前你的店做这样的判断:

Ext.create('User'); 
+0

不应该只是将其添加到控制器的车型阵列,并添加到模型中需要的商店阵列?我从来没有遇到过我的模型没有被定义/实例化的问题。 – Tarabass 2015-07-25 08:42:56

-2
Ext.define('User', { 
    extend: 'Ext.data.Model', 
    fields: [some fields] 
}); 

ExtJS的4.1

+1

欢迎来到StackOverflow!你需要在你的回答中多加一点解释。你为什么认为这会解决问题中列出的问题? – Tass 2013-03-05 09:38:43