似乎没有一种直接的方法来指示单行的记录需要重新呈现。您可以尝试在相关模型上模拟更改事件。
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 传递。出于更新 DataTable 视图的目的,这似乎无关紧要,因为您也可以这样做:
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
在您想要重绘时调用,而不是为修改的每一行触发。希望这可以帮助。