ExtJs4プロジェクトを継承しましたが、かなり基本的な質問があります。
次のように、アイテムの1つとして新しく追加されたチェックボックスフィールドがあるビューがあります。
{
boxLabel: 'Test Message?',
xtype: 'checkboxfield',
id: 'cbTextMessage',
checked: false,
name: 'testMessage',
inputValue: true,
uncheckedValue: false
}
レコードがアクティブな場合、この値は適切なチェック状態または非チェック状態に変わります。新しいレコードを作成するとき、値はチェックボックスの値に設定されます。ただし、既存のレコードを編集する場合、モデルが元の値以外の値に更新されることはありません。
モデル:
Ext.define('PushAdmin.model.Message', {
extend: 'Ext.data.Model',
idProperty: 'id',
requires: ['Proxy.ParameterProxy'],
fields: [
{ name: 'id', type: 'int' },
{ name: 'games', type: 'auto',
convert: function(data, model) {
data = ( data && !Ext.isArray(data) ) ? [data] : data;
return data;
}
},
{ name: 'msgEnglish', type: 'string' },
{ name: 'msgFrench', type: 'string' },
{ name: 'msgSpanish', type: 'string' },
{ name: 'testMessage', type: 'bool' },
{ name: 'sendAt', type: 'date' },
{ name: 'note', type: 'string'},
{ name: 'status', type: 'string' },
],
proxy: {
type: 'rest',
url: '/apnsadmin/rest/Message',
pageParam: undefined,
startParam: undefined,
limitParam: undefined,
reader: {
type: 'json',
root: 'data',
successProperty: 'success'
}
}
});
そして最後に、これは保存ボタンがクリックされたときに呼び出される関数です。
click: function () {
var grid = this.getQueuedMessagesGrid();
var sm = grid.getSelectionModel();
var selectedRecord = sm.getCount() > 0 ? sm.getSelection()[0] : undefined;
this.getMessageForm().getForm().updateRecord();
var newRecord = this.getMessageForm().getForm().getRecord();
if (selectedRecord!=undefined) {
console.log(selectedRecord);
console.log(newRecord);
selectedRecord.save();
} else {
// New record!
console.log("Saving new record");
grid.getStore().add(newRecord);
newRecord.save();
}
this.getMessageForm().setDisabled(true);
this.getMessageForm().getForm().reset();
}
},
私は物事がおそらく物事を行うための適切なExtJSの方法ではないことを知っていますが、これはほとんど機能しているので、私はそれの大きな塊を書き直す必要がないようにしています。このチェックボックス/ブール値フィールドをフォームに追加する際に何が間違っているのかを知りたいだけです。