使用ExtJS4 Store,我想执行一个Javascript函数来返回json数据,即。 getMyJsonData,用于将数据加载到商店中。
function getMyJsonData() {
var myjson = {... };
return myjson;
}
浏览doco,我找不到定义回调函数来加载数据的方法,我发现只是一个内存存储器,它加载已定义的数据对象。
如何调用函数?
Ext.define('perhoo.store.Users',
{
extend: 'Ext.data.Store',
model: 'perhoo.model.User',
autoLoad: true,
data : {
users: [
{ id: 1, name: 'joe44', email: 'joe@joe.com'},
{ id: 2, name: 'bloggs44', email: 'bloggs@joe.com'}
]
},
proxy: {
type: 'memory',
data: this.data,
reader: {
type : 'json',
root : 'users'
}
}
修改
我想调用函数的原因是因为我想执行LinkedIn API。 并且通过Ext JSONP代理(因为它是跨域)使得事情变得更加复杂,因为我必须获得LinkedIn认证等等(我不知道该怎么做)
即。 var mydata = null;
function onLinkedInAuth() {
// Linked in api to find connections
IN.API.Connections("me").result( function(result) {
mydata = result;
} );
}
答案 0 :(得分:0)
ExtJS4的商店使用代理加载数据,请查看以下内容:
var myStore = Ext.create('Ext.data.Store', {
model: 'User',
proxy: {
type: 'ajax',
url : '/users.json',
reader: {
type: 'json',
root: 'users'
}
},
autoLoad: true
});
执行时,它会从url
,/users.json
读取数据并存储到自身。
此外,如果您想自己处理数据并自行加载到商店,可以查看以下内容:
//this is the model we will be using in the store
Ext.define('User', {
extend: 'Ext.data.Model',
fields: [
{name: 'id', type: 'int'},
{name: 'name', type: 'string'},
{name: 'phone', type: 'string', mapping: 'phoneNumber'}
]
});
//this data does not line up to our model fields - the phone field is called phoneNumber
var data = {
users: [
{
id: 1,
name: 'Ed Spencer',
phoneNumber: '555 1234'
},
{
id: 2,
name: 'Abe Elias',
phoneNumber: '666 1234'
}
]
};
//note how we set the 'root' in the reader to match the data structure above
var store = Ext.create('Ext.data.Store', {
autoLoad: true,
model: 'User',
data : data,
proxy: {
type: 'memory',
reader: {
type: 'json',
root: 'users'
}
}
});
您可以在需要时轻松使用setProxy
更改行为。
链接: