2

Ext.view.View を拡張する次のクラスを定義しました。

Ext.define('Aft.view.comments.CommentsList', {
  extend: 'Ext.view.View',
  xtype: 'comments-list',

  parameter: false,

  tpl: new Ext.XTemplate(
    '<tpl for=".">',
    '  <div class="comment">',
           // some code here
    '    <div class="fault">',
    '      <tpl if="this.parameter">',
             // some code also here         
    '      </tpl>',
    '    </div>',
    '  </div>',
    '</tpl>',
    {
      strict: true,
      // other methods and fields
    }),

  initComponent: function() {
    this.config = Ext.apply({}, this.config);
    this.tpl.config.parameter = this.config.parameter;
    this.callParent(arguments);
  }
});

ご覧のとおり、コンポーネントの外部からブール値のパラメーターを内部の XTemplate に渡そうとしています。コンポーネントが3つの異なる場所で使用されているため、私はそれをやろうとしています。そのうちの 1 つで、少し違った外観にしたい (1 つの div なしで)。パラメータ化された XTemplate が良い解決策になることがわかりましたが、強制的に機能させることはできません。次のようなコンポーネントを作成しています。

items: [
    {
        xtype: 'comments-list',
        parameter: false
    }
]

そして、パラメーターとして何を入れたかに関係なく、config に入れたことはすべて、カスタム クラスの他のインスタンス間で共有されているようです。したがって、すべての CommentsList のパラメータが true に設定されているか、すべてのパラメータが false に設定されています。私は明らかに何かが欠けていますが、このトピックは他の人にも混乱を引き起こしているようです. それにもかかわらず、これを解決する適切な方法が見つかりませんでした。クラス定義でconfig、factoryConfig、および変数を直接使用してさまざまな組み合わせを試しましたが、何も機能しないようです。

したがって、解決策、または少なくともブログ投稿またはドキュメントへの貴重なリンクに非常に感謝しています. 事前にどうもありがとうございました。

それが関連する場合、ExtJS 6 クラシックを使用しています。

4

1 に答える 1