この例を試してみてください。
コンソールを開き、jsFiddle を実行し、プロパティ値を変更して、[状態をコンソールに書き込む] をクリックします。
ストアが更新されたレコードをまだ報告していないのはなぜですか? プロパティの新しい値を認識します。
これは、JsFiddle の Ext JS 4.2 コードです。
Ext.onReady(function() {
Ext.define('KitchenSink.view.grid.PropertyGrid', {
extend: 'Ext.container.Container',
requires: [
'Ext.button.Button',
'Ext.grid.property.*',
'Ext.layout.container.VBox',
'Ext.layout.container.HBox'
],
xtype: 'property-grid',
height: 275,
width: 300,
layout: {
type: 'vbox',
align: 'stretch'
},
initComponent: function(){
Ext.apply(this, {
items: [{
xtype: 'container',
layout: 'hbox',
margin: '0 0 10 0',
defaultType: 'button',
items: [{
text: 'Write state to console',
margin: '0 0 0 10',
scope: this,
handler: this.onWriteStateClick
}]
}, {
xtype: 'propertygrid',
source: {
weight: 0.01,
distance: 1
}
}]
});
this.callParent();
},
onWriteStateClick: function(){
var grid = this.down('propertygrid');
var store = grid.getStore();
console.log("Number of new records: " + store.getNewRecords().length);
console.log("Number of updated records: " + store.getUpdatedRecords().length);
console.log("Number of deleted records: " + store.getRemovedRecords().length);
store.each(function (rec) {
console.log("store says --> key: " + rec.get("name") + ", value: " + rec.get("value"));
});
//var source = grid.getSource();
//Object.keys(source).forEach(function(key) {
// console.log("source says --> key: " + key + ", value: " + source[key]);
//});
},
});
Ext.create('KitchenSink.view.grid.PropertyGrid', { renderTo: Ext.getBody() });
});