1

リスト内のテープ アイテムに基づいて、別の詳細ビューを追加しようとしています。

  • List コンポーネントを使用しているホーム画面があり、このビューには ['Real Estate', 'Vehicles', 'Jobs']... がメニュー項目として表示されています。
  • リストで選択したアイテムに基づいて、別のビューを表示したい。
    • そして、MVCのデザインパターンを踏襲したい..

ここにいくつかのコードがあります... App.js

Ext.application({
name: 'App',

controllers: ['Main'],
views: ['Viewport', 'HomePage'],
stores: ['HomePageItems'],
models: ['HomePageItem'],

launch: function () {
    Ext.Viewport.add(Ext.create('App.view.Viewport'));
}

});

Viewport.js

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

requires: [ 'App.view.realestate.Realestate',
            'App.view.HomePage',
            'App.view.jobs.Jobs',
            'App.view.other.Other',
            'App.view.vehicles.Vehicles'
           ],

config: {
    items: [
        {
            xtype: 'homepage'
        }
    ]
}

});

HomePage.js ( xtype = "ホームページ" )

Ext.define('App.view.HomePage', {
extend: 'Ext.List',
xtype: 'homepage',
id: 'homepage',

config: {
    title: 'Oglasi',
    itemTpl: '<strong>{name}</strong><p style="color:gray; font-size:8pt">{description}</p>',
    store: 'HomePageItems',
    onItemDisclosure: true
}

});

Main.js

Ext.define('App.controller.Main', {
extend: 'Ext.app.Controller',

config: {
    refs: {
        main: '#homepage'
    },

    control: {
        'homepage': {
            disclose: 'HookUpDetailView'
        }
    }
},

HookUpDetailView: function (element, record, target, index, ev) {
    // TO DO: I have 4 differente views to load programmaticaly based on selected item in List
    //'App.view.realestate.Realestate'
    //'App.view.jobs.Jobs'
    //'App.view.other.Other'
    //'App.view.vehicles.Vehicles'
}

});

1つの例を見つけましたが、うまくいきません(プッシュメソッドは存在しません)

this.getMain().push({
        xtype: 'realestatehome'
    });

少し早いですがお礼を!

4

3 に答える 3

1

あなたが探している方法は

http://docs.sencha.com/touch/2-0/#!/api/Ext.Container-method-add

this.getMain().add({xtype: 'realestatehome'});

realestatehome はリストであり、その下にコンポーネントを追加することはできません。上記のリンクからレイアウトについて読む必要があります

于 2012-05-16T05:33:38.910 に答える
0

コントローラでミスをしましたthis.getMain()get mainがExt.Listを返しているので、'push'メソッドを持つExt.navigation.Viewが必要です。

だから...ビューポート(「コンテナ」)にxtypeとidを追加し、コントローラをすばやく変更することで問題を解決しました...

refs: {
    main: '#homepage',
    container: '#container'
}

Ext.Listオブジェクトを取得する代わりに

this.getContainer().push({
    xtype: 'realestatehome'
});

そして、これは魅力のように機能します:)

于 2012-05-31T11:46:58.423 に答える
0

プッシュが機能するはずです。このようなことを試すことができます。

  HookUpDetailView: function (list, record) {

           if(record.data.description==='real estate'){

                  this.getRealEstate().push({
                      xtype: 'realestatehome',
                      title: record.data.description,
                      data.  record.data

           });

           if(record.data.description==='Vehicles'){

                  this.getVehicles().push({
                      xtype: 'vehicles',
                      title: record.data.description,
                      data.  record.data

           });


     }
}

そして、特定のビューは次のようになります

Ext.define('App.view.RealEstateHome', {
    extend: 'Ext.Panel',
    xtype: 'realestatehome',
    config: {
        styleHtmlContent: true,
        scrollable: 'vertical',
        tpl: [
            '{description}, {example}, {example}, {example}'
        ]
    }
});

そして、特定のビューにアクセスするための参照は次のようになります

refs: {
        realEstate: 'realestatehome',
        vehicles:   'vehicleshome'
    },

それが役立つことを願っています

于 2012-05-16T05:22:47.273 に答える