Extjs使用商店代理api; CRUD

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Extjs使用商店代理api; CRUD相关的知识,希望对你有一定的参考价值。

嗨,我试图实现writer.js,我收到一个错误:未捕获TypeError:对象#没有方法'读'

这是我的代码片段,非常感谢您对此问题的任何帮助:

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);
            
        
    ]
);
);
答案

当我在加载商店之前没有初始化我的模型时遇到了这个错误。所以在我的情况下做一个Ext.create('my.model')或将我的模型添加到requires属性修复了这个错误:

“未捕获的TypeError:对象#没有方法'读''。

看起来您的模型被称为“用户”,就在您创建商店之前进行此调用:

Ext.create('User');
另一答案
Ext.define('User', 
    extend: 'Ext.data.Model',
    fields: [some fields]
);

Extjs 4.1

以上是关于Extjs使用商店代理api; CRUD的主要内容,如果未能解决你的问题,请参考以下文章

ExtJS - 如何使用代理,模型?它们有啥关系?

选择性地中止通过 Extjs Direct 代理发送的 ajax 请求

在 ExtJS 中使用代理

ExtJS Grid JSON 存储代理错误

ExtJS 4 使用模型代理提交表单

如何在使用代理在 ext js 商店中发布请求时发送 JSON