2つのグリッドがアコーディオンレイアウトで分割されています。彼らは基本的に同じ種類のデータを表示するので、グループ化されたグリッドはトリックを行う必要がありますが、この方法では本当にうまく見えます。Extjsモデルの保存後にグリッドが空白に描画される
グリッドの左側にはグリッドレコードの編集に使用されるフォームパネルがあります。グリッド内のレコードをクリックすると、適切なデータがフォームに表示されます。私はデータを編集することができますが、 'model'.save()アクションをトリガーする保存ボタンをクリックすると、関連するグリッド行が空白になり、ダーティーフラグが表示されます。私はモデルをチェックし、 'data'属性にはデータは含まれていませんが、idは 'modified'属性にあります。
赤い汚れのフラグは、データがバックエンドに保存されていないことを意味しますが、この場合はそうです。要求は200のステータスコードと成功で返されます:true。
コントローラからのOnSave方法:
onSave : function() {
// Get reference to the form
var stepForm = this.getStepForm();
this.activeRecord.set(stepForm.getForm().getValues());
this.activeRecord.save();
console.log(this.activeRecord);
}
ステップストア:
Ext.define('Bedrijfsplan.store.Steps', {
extend : 'Ext.data.Store',
require : 'Bedrijfsplan.model.Step',
model : 'Bedrijfsplan.model.Step',
autoSync : true,
proxy : {
type : 'rest',
url : 'steps',
reader : {
type : 'json',
root : 'steps'
},
writer : {
type : 'json',
writeAllFields : false,
root : 'steps'
}
}
});
ステップモデル:
Ext.define('Bedrijfsplan.model.Step', {
extend : 'Ext.data.Model',
fields : [ 'id', 'section_id', 'title', 'information', 'content', 'feedback' ],
proxy : {
type : 'rest',
url : 'steps',
successProperty : 'success'
}
});
ステップグリッド
Ext.define('Bedrijfsplan.view.step.Grid', {
extend : 'Ext.grid.Panel',
alias : 'widget.stepsgrid',
hideHeaders : true,
border : false,
columns : [ {
header : 'Titel',
dataIndex : 'title',
flex : 1
} ]
});
検索と試しに数時間を費やしていますが、解決策がまだ見つかりませんでした。この問題に関するいくつかの助けをいただければ幸いです:)
が
感謝これは私の問題をかなり解決します!しかし、ストアの同期が行われているときに、バックエンドに保存されていない空のレコードが作成されるという問題がありますか? – Jacob
[Data Package Guide](http://docs.sencha.com/ext-js/4-0/#!/guide/data)でモデルバリデーションを読み、検証に合格しないモデルは.sync()を呼び出すとバックエンドに送信されます。モデルのバリデータを設定して、モデルが保存されるまでモデルにサーバーに送信されないようにします。 –
私は少しはっきりしていたはずです。モデルはサーバーに保存されますが、保存されると、何もない状態で新しい空のレコードが作成されます。たとえば、ストアには2つのレコードがありますが、サーバーに更新した後は突然3になります。私はこれまで検証を使用していませんでした。 – Jacob