0

親コンテナ用のvboxレイアウトがあり、3つのアイテムがあります。1つは静的データ、もう2つは他のリストです。リストの高さを、リスト内のコンテンツのサイズの100%に拡大したいのですが、ここにその例を示します。

ご覧のとおり、これはデータがすぐそこにあり、提供する準備ができている場合にうまく機能しますが、私の場合、コールバックで2つのリストのデータをフェッチし、各リストにそれぞれのストアを設定する必要があります。問題は、高さを指定しないと、リストが折りたたまれ、リストデータが表示されないことです。'fit'を試し、コールバックでビューをrefresh()しようとしましたが、何も機能しないようです。何か案は?

これは、ストアを埋めるためのコントローラーでの私の方法です。

function buildOrgView (record, view) {
    var managerUid = record.get('managerUid');
    var uid = record.get('uid');
    //Get data for org view
    if (managerUid) {
        var managerStore = new People.store.EmployeeDetails();//Ext.data.StoreManager.lookup('mgrDetailsStore');
        managerStore.getProxy().setUrl(People.app.userDetailsUrl + managerUid);
        managerStore.load({
            callback: function (records) {
                var peerStore = new People.store.OrgMembers();
                peerStore.getProxy().setUrl(People.app.orgMembersUrl + managerUid);
                peerStore.load({
                    callback: function (recs) {
                        Ext.each(recs, function(item, idx, allItems) {
                           if (item.get('fullName') == record.get('fullName')) {
                               peerStore.remove(item);
                           }
                        });
                        view.getPeersList().setStore(peerStore);

                        var drStore = new People.store.OrgMembers();
                        drStore.getProxy().setUrl(People.app.orgMembersUrl + uid);
                        drStore.load({
                            callback: function (recs) {
                                view.getDirectReportsList().setStore(drStore);
                            }
                        });
                    }
                });
            }
        });
    }
}

これは、入力したいリストコンポーネントです。

Ext.define('People.view.people.OrgList', {
    extend: 'Ext.List',
    xtype: 'orgList',
    config: {
        cls: 'peopleInfo',
        store: 'OrgMembers',
//        scrollable: true,
//        height: 300,
        itemTpl: [
            "<div class='listView small'>",
            "   <tpl if='workforceID != undefined'>",
            "       <tpl if='workforceID == \"phind\"'>",
            "           <div class='avatar notFound user'></div>",
            "       <tpl else>",
            "           <div class='avatar'></div>",
            "       </tpl>",
            "   </tpl>",
            "   <ul class='data'>",
            "      <li><h3>{fullName}</h3></li>",
            "   </ul>",
            "</div>"
        ],
        listeners: [
            {
                fn: 'onPersonTap',
                event: 'itemtap'
            }
        ]
    },
    onPersonTap: function (dataview, newValue, oldValue, eOpts) {
        debugger;
        this.fireEvent('persontap', this, newValue, oldValue, eOpts);
    }
});
4

2 に答える 2

2

この問題を解決するために私が見つけた最良の方法は、構成で定義した各要素の高さでリスト内の要素の数を掛けてから、ヘッダーの高さ (私の場合は 27px) を追加することでした。これにより、目的の効果が得られますが、少しハックです (フィット レイアウトは実際に機能するはずです)。

view.getPeersList().setHeight(recs.length*50 + 27);

Sencha Touch 2.1.1 では、次の 2 つのパラメーターを使用してアイテムの高さを修正できました。

itemHeight: 50,
variableHeights: false,
于 2013-02-10T04:26:22.550 に答える
1

次のようにストアを設定した後、リストの最小の高さを設定できます。

list.setMinHeight(Ext.Viewport.getWindowHeight()/2);

またはinitialize、リストビューの機能でこれを行うことができます。

于 2013-02-07T12:43:47.213 に答える