Sencha Touch 2.0 MVC учебник [закрыто]
Я очень новичок в Sencha Touch framework, хочу начать с Sencha Touch 2.0, но не могу найти учебник, показывающий приложение, построенное с использованием шаблона MVC и, в частности, в Sencha Touch версии 2.0.
3 ответа:
Вот два видео с конференции sencha 2011:
SenchaCon 2011: MVC In Depth Часть 1 https://vimeo.com/33311074
И
SenchaCon 2011: MVC In Depth Part 2 https://vimeo.com/33430731
Также вы можете проверить их блог на наличие других коротких учебных пособий.
Еще одно видео, чтобы лучше понять Sencha Touch 2
Сенчакон 2011: система классов Сенча https://vimeo.com/33437222
Это, вероятно, один из самых ранних учебников, так что будьте терпеливы и знайте, что все может измениться к окончательному выпуску увидит свет дня.
Для MVC вам нужно сначала настроить структуру папок. Что-то вроде этого:
Теперь давайте начнем с примера приложения.MyApp app controller model profile store view touch2 app.js index.html
Индекс.html
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Sample App</title> <link rel="stylesheet" href="touch2/resources/css/sencha-touch.css" type="text/css" title="senchatouch" id="senchatouch" /> <link rel="stylesheet" href="touch2/resources/css/android.css" type="text/css" title="android" id="android" disabled="true" /> <link rel="stylesheet" href="touch2/resources/css/apple.css" type="text/css" title="apple" id="apple" disabled="true" /> <link rel="stylesheet" href="touch2/resources/css/bb6.css" type="text/css" title="blackberry" id="blackberry" disabled="true" /> <link rel="stylesheet" href="styles/main.css" type="text/css"> <script type="text/javascript" src="touch2/sencha-touch-debug.js"></script> <script type="text/javascript" src="app.js"></script> </head> <body></body> </html>
Приложение.js
Хорошо, теперь у вас есть два основных файла на месте и Ext.Загрузчик будет извлекать компоненты фреймворка по мере необходимости для упрощения отладка.Ext.Loader.setConfig({ enabled : true }); Ext.application({ name: 'MyApp', profiles: ['Tablet'], views: [ // common Tablet & Phone views ], models: [ ], controllers: [ 'Main' ], launch:function(){ Ext.Viewport.add(Ext.create('MyApp.view.Main')); //Ext.Viewport.add(Ext.create('MyApp.view.tablet.Main')); } });
Сначала вы настраиваете пространство имен вашего приложения (MyApp). Это означает, что все ваши будущие классы будут определены в пространстве имен MyApp.
Тогда вы определили два основных профиля. Планшет и телефон. Они рассказывают вашему приложению, как вести себя в различных средах. Укажите здесь столько же (или ни одного).
Далее вы настроили представления, модели и контроллеры, которые являются общими для двух профилей. Им все равно, используете ли вы приложение на телефоне или планшете.
Давайте продолжим с нашим профилем планшета
Приложение / профиль / планшет.js
Ext.define('MyApp.profile.Tablet', { extend: 'Ext.app.Profile', config: { views: [ 'Main' ] }, isActive: function() { return !Ext.os.is('Phone'); }, launch: function() { Ext.create('MyApp.view.tablet.Main'); } });
Довольно понятно. Объект Config содержит ваши представления / модели / контроллеры, относящиеся к профилю. Они не будут использоваться (включены), если вы используете приложение на смартфоне.
Метод IsActive должен возвращать значение true или false после оценки среды. Я специально сказал, что планшеты - это все не телефоны. Логически это неверно, но я решил играть таким образом для простота. Более правильным способом было быreturn Ext.os.is('Tablet') || Ext.os.is('Desktop');
Последний бит профиля - это метод запуска. Он говорит приложению, что делать, когда приложение запускается в определенном профиле. Приложение будет создать главный вид на внутр.Область просмотра.
Обратите внимание, что ВН.Просмотра является экземпляром доб.Контейнер, который уже был добавлен в DOM при запуске приложения.
Давайте создадим наше первое представление. Это может быть любой виджет, который вы хотите, и я выбрал NavigationView.App/views/Main.js
Ext.define('MyApp.view.Main', { extend: 'Ext.navigation.View', config: { fullscreen : true, items: [ { title: 'My Great App' } ] } });
Это полноэкранный режим (100% ширина и высота), и он сразу создает заголовок с названием My Great App.
Вы заметили, что мы только что определили MyApp.вид.Главное, но приложение будет ожидать MyApp.вид.таблетка.Главная? Именно потому, что я хотел показать, как можно повторно использовать представления между профилями. Это полезно только в том случае, если мы меняем их биты в зависимости от профиля.
App / views / tablet / Main.js
Ext.define('MyApp.view.tablet.Main', { extend: 'MyApp.view.Main', initialize: function() { this.add({ xtype : 'button', action : 'coolBtn', text : 'Running on a tablet' }); this.callParent(); } });
Это выглядит великолепно уже. Просто ради расширения я добавил дополнительную кнопку в NavigationView. Я собираюсь настроить контроллер, который будет работать с кнопкой
App/controller/Main.js
Ext.define('MyApp.controller.Main', { extend: 'Ext.app.Controller', config: { refs: { coolButton: 'button[action=coolBtn]' }, control: { coolButton: { tap: 'onCoolButtonTap' } }, routes: { 'show/:id' : 'showItem' } }, onCoolButtonTap: function(button) { console.log(button === this.getCoolButton()); }, showItem: function(id) { console.log('Showing item',id); } });
Это потрясающая часть, прямо здесь. Ссылки дают нам быстрый доступ к компонентам на основе правил запроса компонентов (кнопка [action=coolBtn] означает find my a xtype = button cmp, которая имеет свойство action = coolBtn). Ссылки также добавляют методы getter, как показано в Примере onCoolButtonTap.
Тогда Я контролирую кнопку и сказать приложение, чтобы отслеживать события коснитесь и назначить обработчик на него.
Еще одним умным дополнением к шаблону MVC являются маршруты. Они обнаружат "команды" в вашем URI-пути, например
http://localhost/#show/7482
, и выполнят их через предоставленный обработчик showItem.Резюме
Я думаю, что теперь у вас есть основная идея о том, как начать работу с вашим приложением MVC. С некоторым любопытством вы можете расширить свои знания и создавать удивительные приложения.Обратите внимание, что я это записал из моей головы и не проверяли. Дайте мне знать, если обнаружите опечатку или что-то еще.
Убедитесь, что вы используете Beta1 realease, так как он имеет последний набор примеров. Если вы посмотрите на пример пробежки с друзьями, вы можете увидеть, как работает система классов.
Первое, что нужно понять, - это структура приложения, состоящая из контроллеров, моделей, хранилищ и представлений, а также то, как они определяются внутри Ext.Приложение...Они все еще работают над документацией и учебники скудны, я узнал новую систему классов, просто взглянув на образец приложение, взгляните, это, вероятно, поможет вам начать
Также documentatikn для системы классов находится здесь: http://docs.sencha.com/touch/2-0/#! / guide / class_system
Edit: после публикации этого я увидел, что Beta2 теперь выпущен