我无法加载我的第一个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它会返回一个对象。如果返回数据自动填充我的商店,我做错了什么。
这是我试图使用的模型......我知道它还没有所有字段。
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'
}
}
这是我创建商店
的MainModel.jsExt.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
},
答案 0 :(得分:1)
问题是商店希望rootProperty包含一系列记录,而您只提供一条记录。
如果您只想加载一个不在数组中的单个记录,则必须使用静态model.load()
函数。
或者您可以将API端点从User JSON
更改为List<User> JSON
(或IEnumerable<User>
或ICollection<User>
或User[]
...),即使您打算只返回一个用户。无论JSON数组中有多少条记录,但ExtJS商店都需要该数组。