1

我有一个使用 ExtJS 4.1 的网络应用程序。javascript都是MVC。我有一个商店,它对服务器进行 JSON 调用以获取包含 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)完全删除子项

第二种更可取,因为有一个额外的子组件没有任何用处,也没有具有单个中心子区域的边框布局。

于 2012-08-28T22:58:49.167 回答