Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   MVC и DirectAPI (https://javascript.ru/forum/extjs/18183-mvc-i-directapi.html)

env0ke 21.06.2011 09:37

MVC и DirectAPI
 
Всем привет,

Столкнулся с такой проблемой в ExtJS 4. Пишу приложение по паттерну mvc, в функции launch приложения как и предписано добавляю провайдер:

Код:

Ext.direct.Manager.addProvider(Ext.app.DirectAPI);

Так же есть ряд view, model, store. Вот со стором как раз проблема - в нем я использую proxy с методом из API провайдера, но ругается на отсутствие этот API, якобы оно не задано.

Код:

Ext.define('FS.store.Subscribers', {
        extend: 'Ext.data.Store',

        model: 'FS.model.Subscriber',
        autoLoad: true,
        LoadMask: true,
        pageSize: 30,

        proxy: {
                type: 'direct',
                directFn: SubscribersApi.get_all_actions,
                reader: {
                        type: 'json',
                        root: 'data',
                        successProperty: 'success',
                        totalProperty: 'total'
                }
        }
});


В файрбаге вылезает ошибка SubscribersApi.get_all_actions is not defined, оно и понятно - launch запускается уже после загрузки всех компонентов приложения. Прошу знающих людей подсказать как у них организовано подключение провайдера, у меня сам Ext.app.DirectAPI задается в самом верху html до включения app.js, но даже если я выношу Ext.direct.Manager.addProvider(Ext.app.DirectAPI); из приложения, то все равно не работает - без ошибок, но загрузка приложения не проходит.

Спасибо.

env0ke 21.06.2011 10:11

Переписал стор на:

Код:

Ext.define('FS.store.Subscribers', {
        extend: 'Ext.data.DirectStore',

        initComponent: function() {
                var config = {
                        model: 'FS.model.Subscriber',
                        api: {
                                read: SubscribersApi.get_all_actions
                        },
                        autoLoad: true,
                        LoadMask: true,
                        root: 'data',
                        successProperty: 'success',
                        totalProperty: 'total',
                        pageSize: 30
                };
                Ext.apply(this, Ext.apply(this.initialConfig, config));
                this.superclass.initComponent.apply(this, arguments);
        }
});


Теперь страница загружается без ошибок, но приложение не рендерится.


Часовой пояс GMT +3, время: 16:04.