0

コントローラーで行われた変更をビューに更新する方法は?

意見

 Ext.define('SomeClassName',
 extends: 'Ext.container.Container',
 alias: 'widget.somewidget'
 /* other content here */

コントローラ

 requires: ['SomeClassName'],
 init: function(){
     var someVar = Ext.widget('somewidget');
     Ext.apply(someVar,{html: 'hello'});
 }

上記のコントローラーでhtmlは、変数の を変更していますが、ビューは変更されていません。ここで何か間違ったことをしていますか?

これが不可能な場合、これを行う方法は?

4

2 に答える 2

1

それはどうですか(doc)?

Ext.widget('somewidget', { html: 'hello' })
于 2013-03-19T13:43:16.687 に答える
1

まず、Ext.container.Containerカスタム HTML をレンダリングするだけの場合は使用しないでください。Ext.Componentこれで十分でしょう。次に、テンプレートを使用できます。

Ext.define('MyView', {
    extend: 'Ext.Component',
    alias: 'widget.myview',
    tpl: [
        '<div>Simon says: {command}</div>'
    ]
});

Ext.define('MyController', {
    extend: 'Ext.app.Controller',
    requires: ['MyView'],
    init: function() {
        var cmp = Ext.widget('myview');
        cmp.update({
            command: 'jump!'
        });
    }
});

tplコンポーネントが最初にレンダリングされたときに適用されないことに注意してください。それを呼び出す必要がありますupdate。初期化時にテンプレートをレンダリングするには、dataプロパティにデフォルトのテンプレート値を設定します。

Ext.define('MyView', {
    extend: 'Ext.Component',
    alias: 'widget.myview',
    tpl: [
        '<div>Simon says: {command}</div>'
    ],
    data: {
        command: 'do nothing.'
    }
});
于 2013-03-19T18:07:28.893 に答える