extjs store.load没有填充,可能是root对象问题?

时间:2016-07-20 18:49:20

标签: extjs model store

我无法加载我的第一个ExtJS商店。

        var testStore = Ext.data.StoreManager.lookup('myUserStoreID');
        testStore.load({

        callback: function (records, operation, success) {

            testStore.each(function (record) {
                debugger;
                var task = record.data.description;
                console.log(task);
            });

            //debugger;
            //var x2 = operation._response;
            //var x3 = x2.responseText;
            //var x4 = Ext.decode(x3);
            ////var x3 = Ext.JSON.decode(operation);
            ////var x2 = Ext.decode(operation.response);

            //console.log(testStore);

        }
    });

在调试器中,如果我深入到operation._response.responseText,我可以看到正确的数据,但记录是空白的。所以我知道它只与我的代码有关。如果我使用Ext.decode它会返回一个对象。如果返回数据自动填充我的商店,我做错了什么。

这是fiddler中对象的图片。 fiddler

这是我试图使用的模型......我知道它还没有所有字段。

Ext.define('ExtApplication1.model.UserModel', {
extend: 'ExtApplication1.model.Base',

requires: ['ExtApplication1.model.Base'],

fields: [
    /*
    The fields for this model. This is an Array of Ext.data.field.Field definition objects or simply the field name.
    If just a name is given, the field type defaults to auto.  For example:
    */
    { name: 'UserID',     type: 'int' },
    { name: 'UserName',      type: 'string' },
    { name: 'password',    type: 'string' },
    { name: 'Email',   type: 'string' },
    { name: 'GroupID' }

],

proxy: {

    type: 'ajax',
    url: 'http://localhost:49537/api/user/gettargetuser/xxx/xxx',

    reader: {
        type: 'json',
        rootProperty: 'JSON'
    }

}

这是我在webapi中的User类 userclasswebapi

这是我创建商店

的MainModel.js
Ext.define('ExtApplication1.view.main.MainModel', {
extend: 'Ext.app.ViewModel',

alias: 'viewmodel.main',

data: {
    name: 'ExtApplication1',
    appName: xxx,
    appHeaderIcon: '<span class="fa fa-desktop fa-lg app-header-logo">',
    footer: 'Copyright - xxx- x
},

stores: {
        sessionListByInterest: {
            model: 'MainMenuListModel',
            autoLoad: false     //was true
        },
        myUserStore: {
            model: 'UserModel',
            storeId: 'myUserStoreID',
            autoLoad: false
        },

1 个答案:

答案 0 :(得分:1)

问题是商店希望rootProperty包含一系列记录,而您只提供一条记录。

如果您只想加载一个不在数组中的单个记录,则必须使用静态model.load()函数。

或者您可以将API端点从User JSON更改为List<User> JSON(或IEnumerable<User>ICollection<User>User[] ...),即使您打算只返回一个用户。无论JSON数组中有多少条记录,但ExtJS商店都需要该数组。