ExtJS4 Ext.data.Store Загрузить данные из функции - PullRequest
0 голосов
/ 12 февраля 2012

Используя ExtJS4 Store, я хочу выполнить функцию Javascript для возврата данных json, т.е. getMyJsonData, чтобы загрузить данные в хранилище.

function getMyJsonData() {
  var myjson = {... };
  return myjson;

}

Проходя через документ, я не могу найти способ определить функцию обратного вызова для загрузки данных, все, что я нашел, это хранилище памяти, которое загружает уже определенный объект данных.

Как я могу вместо этого вызвать функцию?

 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'
                }
            }

EDIT

Причина, по которой я хочу вызвать функцию, заключается в том, что я хочу выполнить API-интерфейс LinkedIn. И прохождение через Ext JSONP Proxy (так как оно является междоменным) делает вещи в 10 раз сложнее, так как мне нужно получить LinkedIn-аутентификацию и т. Д. И т. Д. (Что я пока не знаю, как это сделать)

т.е. var mydata = null;

function onLinkedInAuth() {
   // Linked in api to find connections
   IN.API.Connections("me").result( function(result) { 

        mydata = result;
   } );

}

1 Ответ

0 голосов
/ 12 февраля 2012

Магазин 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 для изменения поведения, когда хотите.

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...