2012-07-12 9 views
5

Ich versuche, einfache Ansicht mit Liste auf Container zu schreiben, aber ich habe ein paar Probleme. Zunächst einmal ist die Liste nicht sichtbar, wenn ich versuche, es so zu tun:Sencha Touch 2 Liste ist unsichtbar in Container

Ext.define('App.view.News', { 
    extend: 'Ext.Container', 

aber wenn es so geschrieben:

Ext.define('App.view.News', { 
    extend: 'Ext.navigation.View', 

es funktioniert.

Das Problem ist, dass, wenn ich es mit der Erweiterung der Navigation.View schreibe, bekomme ich zwei Symbolleisten an der Spitze und ich kann keine Lösung finden, um die zweite zu deaktivieren (von der Liste hinzugefügt).

Voll Code:

Ext.define('App.view.News', { 
    extend: 'Ext.Container', //Ext.navigation.View 
    xtype: 'news', 
    requires: [ 
     'Ext.dataview.List', 
     'Ext.data.proxy.JsonP', 
     'Ext.data.Store' 
    ], 
    config: { 
     style: ' background-color:white;', 

     items: 
     [ 
      { 
       xtype: 'toolbar', 
       docked: 'top', 
       title: 'News', 
       minHeight: '60px', 
       items: [ 
        { 
         ui: 'back', 
         xtype: 'button', 
         id: 'backButton', 
         text: 'Back', 
        }, 

        { 
         minHeight: '60px', 
         right: '5px', 
         html: ['<img src="resources/images/Image.png"/ style="height: 100%; ">',].join(""), 
        }, 
       ],   
      }, 

      { 
       xtype: 'list', 
       itemTpl: '{title},{author}', 
       store: { 
        autoLoad: true, 
        fields : ['title', 'author'], 
        proxy: { 
         type: 'jsonp', 
         url: 'https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q=http://feeds.feedburner.com/SenchaBlog', 
         reader: { 
          type: 'json', 
          rootProperty: 'responseData.feed.entries' 
         } 
        } 
       } 
      } 
     ] 
    } 
}); 

Hilfe bitte!

Antwort

10

Sie müssen Ihrem Container ein Layout und Ihre Liste eine Flex-Eigenschaft geben. Der Flex ist wichtig für Listen, da sie seit dem Scrollen keine sichtbare Höhe haben. Ich habe dem unten stehenden Code einige Eigenschaften hinzugefügt. Hoffe das hilft.

Ext.define('App.view.News', { 
    extend: 'Ext.Container', //Ext.navigation.View 
    xtype: 'news', 
    requires: [ 
     'Ext.dataview.List', 
     'Ext.data.proxy.JsonP', 
     'Ext.data.Store' 
    ], 
    config: { 
     style: ' background-color:white;', 
     layout: 'vbox', // add a layout 
     items: 
     [ 
      { 
       xtype: 'toolbar', 
       docked: 'top', 
       title: 'News', 
       minHeight: '60px', 
       items: [ 
        { 
         ui: 'back', 
         xtype: 'button', 
         id: 'backButton', 
         text: 'Back', 
        }, 

        { 
         minHeight: '60px', 
         right: '5px', 
         html: ['<img src="resources/images/Image.png"/ style="height: 100%; ">',].join(""), 
        }, 
       ],   
      }, 

      { 
       xtype: 'list', 
       itemTpl: '{title},{author}', 
       flex: 1, // add a flex property 
       store: { 
        autoLoad: true, 
        fields : ['title', 'author'], 
        proxy: { 
         type: 'jsonp', 
         url: 'https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q=http://feeds.feedburner.com/SenchaBlog', 
         reader: { 
          type: 'json', 
          rootProperty: 'responseData.feed.entries' 
         } 
        } 
       } 
      } 
     ] 
    } 
}); 
+0

Das ist, was ich wollte. Ich danke dir sehr! – kmb

+0

Oh Mann, du hast mir das Leben gerettet! Verdammter Flex ... Ich wurde langsam wütend wegen dieser blöden Liste! : P – Olivier

+0

gerade tailliert 3h dies zu beheben. Ich musste das Containerlayout so einstellen, dass es "passt". Danke! – Lucian