似乎沒有一種簡單的方式來指示單行記錄需要重新呈現。您可以嘗試模擬相關模型上的change事件。
var table = new Y.DataTable({
columns: [
{ key: 'obj', label: 'nested', formatter: function (o) { return o.value.nested; } }
],
data: [ {obj: {nested: 42}} ]
}).render('#table'), row = table.getRecord(0), data = row.get('obj');
data.nested = 47;
row.fire('change', { changed: { prevVal: data, newVal: data } });
根據您想如何緊密地模仿Model:change事件,你可能想改變它,然後才通過執行數據的深層副本,作爲PREVVAL。 對於更新的數據表視圖的目的,這似乎並不重要,因爲你可以有一樣好做到了這一點:
row.fire('change');
結果將是一樣的。這是脆弱的,它可能不是如何使用界面。但是,如果您需要完成的所有操作都是在更改內部狀態後更新視圖,而不是觸發任何與更改相關的事件,那麼DataTable.syncUI是更爲優雅的解決方案。
var table = new Y.DataTable({
columns: [
{ key: 'obj', label: 'nested', formatter: function (o) { return o.value.nested; } }
],
data: [ {obj: {nested: 42}} ]
}).render('#table'), row = table.getRecord(0), data = row.get('obj');
data.nested = 47;
table.syncUI();
有了這個,你可以執行所有的數據操作,然後調用syncUI
當你要重畫,而不是燒製修改的每一行。希望這可以幫助。