как создать «MVC-приложение» с extjs 4.0 beta 3?

#extjs #extjs4

#extjs #extjs4

Вопрос:

Есть ли здесь кто-нибудь, кто создал приложение MVC с использованием EXTJS 4 BETA 3? и работает нормально?? пожалуйста, помогите мне как?, ..

Я следовал шаг за шагом здесь .. и @Abdel Olakara помогает

но ошибка все еще есть … вот мой firebug

 [Ext.Loader] Synchronously loading 'AM.controller.Users'; consider adding  
Ext.require('AM.controller.Users') above Ext.onReady  

[Ext.Loader] Synchronously loading 'AM.store.Users'; consider adding  
Ext.require('AM.store.Users') above Ext.onReady

this.getView('Viewport') is null
  

Когда я прочитал это на форуме … в руководстве по MVC все еще есть некоторые ошибки…

так что, если у тебя когда-нибудь получится, это сработает.. как?

это мой Application.js :

 Ext.Loader.setConfig({enabled:true}); 
Ext.create('Ext.app.Application', {
    name: 'AM',

    controllers: [
        'Users'
    ],

    views: [
        'user.List'
    ],

    launch: function() {
        Ext.create('Ext.container.Viewport', {
            layout: 'fit',
            items: {
                xtype: 'userlist'
            }
        });
    }
});
  

я пытаюсь изучить MVC в Extjs…
извините, если мой английский плохой..

Комментарии:

1. функции MVC все еще не готовы.. Вам придется подождать, пока команда разработчиков Ext JS выпустит его полностью со всеми исправлениями ошибок и надлежащей документацией.

Ответ №1:

Что ж, я думаю, мне следует взять свои слова обратно! Я добился некоторого успеха после просмотра блога sencha. И, наконец, мой «скелет» MVC запущен!

Вот рабочий код:

 Ext.Loader.setConfig({enabled:true});
Ext.create('Ext.app.Application', {
    name: 'AM',
    autoCreateViewport: false,
    controllers: [],

    launch: function() {
        Ext.create('Ext.container.Viewport', {
            layout: 'fit',
            items: [
                {
                    xtype: 'panel',
                    title: 'Users',
                    html : 'List of users will go here'
                }
            ]
        });
    }
}); 
  

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

Я буду продолжать обновлять этот ответ в будущем.


Обновление: первые две упомянутые ошибки на самом деле не являются ошибками. Это предупреждения, и приложение работает нормально, даже если оно отображает эти предупреждения. Третья ошибка, о которой вы упомянули, — это стопор!

Решение проблемы с Viewport Вот два способа ее решения.

  1. Используйте autoCreateViewport: false, свойство и определите свой видовой экран (я вижу, что вы определили свой видовой экран в методе запуска)
  2. Создайте Viewport.js и сохраните его в папке просмотра. В этом случае я почувствовал, что мой метод запуска пуст и переместил код области просмотра в Viewport.js файл. Но я получаю сообщение об ошибке:

    Ошибка неперехваченного типа: не удается вызвать метод ‘create’ с нулевым значением

Комментарии:

1. Ext.Loader.setConfig({включено: true}); это то, что я ищу… «Я добился некоторого успеха после просмотра блога sencha. И, наконец, мой «скелет» MVC запущен! «в каком потоке?? можете дать мне ссылку??

2. на самом деле я все еще получаю ошибку this.getView("Viewport") is null , вроде этой: sencha.com/forum/… ….. теперь я изо всех сил пытаюсь это исправить ‘

3. что ж.. у меня нет ошибки .. можете ли вы опубликовать свой последний код, отредактировав вопрос?

4. весь скрипт?? или только Applicatition.js ?? я думаю, что со всеми сценариями здесь ничего не изменилось: dev.sencha.com/deploy/ext-4.0-beta3/docs/guide / … .. но просто для уверенности я отредактирую свой вопрос с моим последним Application.js

5. 1 @Abdel, отлично … теперь у меня все работает… но часть с предупреждением действительно раздражает… это похоже на то, что мы создаем приложение не на языке Ext4..

Ответ №2:

Я действительно использую ExtJS 4.1.

В моем коде [Ext.Loader] Synchronously loading 'OOO.store.News'; consider adding
Ext.require('OOO.store.News') above Ext.onReady
вызывалось предупреждающее сообщение, если я размещаю

 stores: [
    'News',
],
  

в моем app/Application.js файле вместо app/controller/OOO.js file.

Итак, поместите stores:[], в файл контроллера.

Комментарии:

1. интересно, но это устраняет проблему с предупреждением. Спасибо