0

私は Ext.dataview.List を拡張するジェネリック クラスを持っており、現在、私が持っている一連のブログを一覧表示しています。

Ext.define('Blog.view.BlogList',{
extend: 'Ext.dataview.List',
xtype: 'blogList',

config: {
    cls: 'blogList',
    emptyText: 'No blogs found...',
    itemCls: 'blogListItem',
    itemTpl: [
        '<div class="blogThumb"><img src="{image.medium}" /></div>',
        '<div class="blogTitle">{title}</div>',
    ].join(''),
    loadingText: 'Loading blogs...'
    }
});

誰かがリスト内の項目の 1 つをタップすると、私のコントローラーは現在メソッドを実行しshowBlogます。これが私の現在のコントローラーです:

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

config: {
    refs: {
                    blogContainer: 'blogContainer',
        blogList: 'blogList'
    },
    control: {
        blogList: {
            itemtap: 'showBlog'
        }
    }
},

slideLeftTransition: { type: 'slide', direction: 'left'},

init: function() {
    console.log('Blog.controller.Main init');
},

launch: function() {
    console.log('Blog.controller.Main launch');
},

showBlog: function(list, index, element, record) {
    console.log('showing blog #'+record.data.id);

    var blogContainer = this.getBlogContainer();
    blogContainer.setData(record.data);
    Ext.Viewport.animateActiveItem(blogContainer, this.slideLeftTransition);
}

});

これまでのところ、すべてがうまく機能していますが、タップされたレコードからの新しい情報で blogContainer のすべてのコンポーネントを更新する方法がわかりません。

パネルを作成するという単純な概念を使用できません。ブログがタップされたときに、かなり複雑な新しいコンテナーが表示されるようにしたいからです...サブコンポーネントなど.

この新しいコンテナーにblog詳細を表示し、その情報を更新する方法を教えてください。

4

1 に答える 1

0

これを試すことができます。コメントアウトされた行は、データにアクセスしてその値をコンポーネントに設定する方法のもう 1 つの例です。

showBlog: function(view, record, item, index, e) {

    console.log('showing blog #'+index.data.id);

   // console.log('showing blog #'+index.data.example);

    var blogContainer = this.getBlogContainer();

    blogContainer.setData(index.data.id);

   // Ext.getCmp('idoftextfield').setValue(index.data.example);

    Ext.Viewport.animateActiveItem(blogContainer, this.slideLeftTransition);

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

于 2012-05-16T04:45:57.337 に答える