2012-03-25 2 views
0

Я пытаюсь импортировать внешний файл html в Touch 2 и сталкиваться с ошибками. На мой взгляд код выглядит следующим образом:импорт html-файлов в Sencha Touch 2

Ext.define("GS.view.Demo", { 
    extend: 'Ext.container.Container', 
    xtype: 'container', 

    requires: [ 
    'Ext.Component', 
    'Ext.ItemCollection', 
    'Ext.Mask', 
    'Ext.behavior.Scrollable', 
    'Ext.layout.Layout', 
    ], 

    config: { 
    title: 'Demo', 
    iconCls: 'star', 


    items: [{ 
       flex: 1, 
       margins: '0 2 0 0', 
       title: 'Load raw html', 
       styleHtmlContent: true, 
       bodyPadding: 5, 
       loader: { 
        autoLoad: true, 
        url: 'SHdemo.html' 
       } 
      }] 

     } 
    }); 

и apps.js:

//<debug> 
Ext.Loader.setPath({ 
'Ext': 'sdk/src' 
}); 
//</debug> 

Ext.application({ 
    controllers: ["Main"], 

name: 'GS', 

requires: [ 
    'Ext.MessageBox' 
], 

views: ['Main', 'Home', 'Contact', 'Blog', 'Demo'], 

icon: { 
    57: 'resources/icons/Icon.png', 
    72: 'resources/icons/Icon~ipad.png', 
    114: 'resources/icons/[email protected]', 
    144: 'resources/icons/[email protected]' 
}, 

phoneStartupScreen: 'resources/loading/Homescreen.jpg', 
tabletStartupScreen: 'resources/loading/Homescreen~ipad.jpg', 

launch: function() { 
    // Destroy the #appLoadingIndicator element 
    Ext.fly('appLoadingIndicator').destroy(); 

    // Initialize the main view 
    Ext.Viewport.add(Ext.create('GS.view.Main')); 
}, 

onUpdated: function() { 
    Ext.Msg.confirm(
     "Application Update", 
     "This application has just successfully been updated to the latest version.  Reload now?", 
     function() { 
      window.location.reload(); 
     } 
    ); 
    } 
}); 

этот код кидает «Следующие классы не объявляются даже если были загружены их файлы:«Ext.container.Container '', и если я заменю 'Ext.container.Container' на 'Ext.Container', я получаю сообщение «Ошибка: [Ext.createByAlias] Невозможно создать экземпляр нераспознанного псевдонима: widget.demo». Какова правильная процедура импорта внешних html-файлов?

ответ

0

Нет необходимости в xtype: 'container'. Вы должны добавить псевдоним для вашего контейнера, как

extend: 'Ext.Container', 
alias:'widget.demo' 

и добавить его в окно просмотра могут выглядеть следующим образом

Ext.Viewport.add({xtype:'demo'}); 
+0

Спасибо за помощь, нечеткого. псевдоним отрицает ошибку виджета, но я не уверен, где объявить код видового экрана, и в результате внешний файл не загружается. На моем экране «demo» у меня есть пустой контейнер. – kjarsenal

+0

Вы можете добавить xtype: 'Demo' в область просмотра, а затем вызвать его exampleviewport.setActiveItem(). Кроме того, контейнер не имеет конфигурации заголовка, а поля должны быть маржи, bodyPadding должен быть просто дополнением. Вместо загрузчика вы должны добавить что-то вроде инициализации внутри слушателя. Выше flex внутри вашей конфигурации Items добавьте xtype: 'container' и измените заголовок на html. – fuzzyLikeSheep

+1

Большой проблемой здесь является xtype: «контейнер», который у вас есть. Контейнер xtype уже используется Ext.Container, поэтому вы должны дать вашему классу уникальный xtype. Прошлое, которое, как и fuzzyLikeSheep, упоминает, у вас есть много конфигов, которые не являются допустимыми конфигурациями в этой ситуации. Вызов ajax поможет вам вместо конфигурации загрузчика –