1

ExtJS4.1を使用するWebアプリがあります。javascriptはすべてMVCです。サーバーにJSON呼び出しを行って、コンポーネントの1つのコンテンツを置き換えるhtmlマークアップを含む単一のレコードを取得するストアがあります。ストアが正しく機能し、コントローラーが正しく機能していることを確認できますが、ビューで使用している機能が機能してsetInnerHtmlいません。

これが私のコントローラーコードです:

Ext.define(appName + '.controller.Header', {
    extend: 'Ext.app.Controller',

    stores: [ 'Header' ],
    models: [ 'Header' ],
    views: [ 'main.Header' ],
    refs: [{ ref: 'headerView', selector: 'header' }],

    init: function () {
        var headerStore = this.getHeaderStore();
        headerStore.addListener('load', this.onHeaderStoreLoad, this);
    },

    onLaunch: function () {
    },

    onHeaderStoreLoad: function (store, records, successful) {
        if (successful) {
            var headerContent = store.first().data.html;
            var headerView = this.getHeaderView();
            headerView.setInnerHtml(headerContent);
        }
    }
});

これが私のビューコードです:

Ext.define(appName + '.view.main.Header', {
    extend: 'Ext.panel.Panel',
    alias: 'widget.header',

    height: 30,
    layout: 'border',
    border: false,

    items: [
        { html: 'header', region: 'center' } // this is just a temporary placeholder and I'd like to replace this item with different html
    ],

    setInnerHtml: function (html) {
        this.update(html); // doesn't work
    }
});

機能を変更するにはどうすればよいsetInnerHtmlですか?

4

1 に答える 1

0

少なくとも同時にではなく、items / htmlを混在させないでください。そのため、次のいずれかを行う必要があります。

1)ヘッダーの最初の子の更新を呼び出します

this.items.first().update(html);

2)子アイテムを完全に削除します

子コンポーネントを追加しても目的がなく、単一の中央の子領域を持つ境界線レイアウトがないため、2番目の方が適しています。

于 2012-08-28T22:58:49.167 に答える