バインドされている真/偽の値に基づいて、緑のチェックまたは赤の x 画像をレンダリングするカスタム extjs コンポーネントを取得しようとしています。
以前の開発者がカスタム ラベル/カスタム ボタンをレンダリングするために作成した他のコントロールがいくつかありますが、それを基にコントロールしようとしていますが、うまくいきません。
「recordIsValid」がモデルのプロパティの名前である次のようなビューで使用できるようにしたいと思います。(xtype を削除すると、true/false としてレンダリングされます)
{
"xtype": "booldisplayfield",
"name": "recordIsValid"
}
これが私がこれまでに持っているものですが、ExtJS は私にとってかなりなじみのないものです。
Ext.define('MyApp.view.ux.form.BoolDisplayField', {
extend: 'Ext.Component',
alias : 'widget.booldisplayfield',
renderTpl : '<img src="{value}" />',
autoEl: 'img',
config: {
value: ''
},
initComponent: function () {
var me = this;
me.callParent(arguments);
this.renderData = {
value: this.getValue()
};
},
getValue: function () {
return this.value;
},
setValue: function (v) {
if(v){
this.value = "/Images/booltrue.png";
}else{
this.value = "/Images/boolfalse.png";
}
return this;
}
});
上記のほとんどは、以前のカスタム リンクボタンの実装から取得しました。setValue
モデル値recordIsValid
がコントロールにバインドされたときに呼び出されると想定していました。次に、それが true か false かに基づいて、コントロールの value プロパティの設定を正しい画像でオーバーライドします。
そして、initComponent で、renderData value
呼び出しによって を設定しgetValue
、これが文字列に挿入されるようにしrenderTpl
ます。
どんな助けでも大歓迎です。