我有一个名为accounts的对象列表,这些对象绑定到vaadin数据网格。我还有一个逻辑,用一大笔交易更新每个账户的余额属性。
_updateAccountBalance: function() {
this.accounts.map(account => { account.balance = 0; });
this.transactions.map(trans => { trans.account.balance += trans.amount; });
// This doesn't notify other watchers of the accounts
//this.set("accounts", this.accounts);
// hack to get notifications to work
this.accounts.map((account, idx) => {
this.set("accounts." + idx + ".balance", account.balance);
});
}
我的问题是:是否有更惯用的方式来做到这一点?
因为有很多事务,所以在累加器映射中使用set会产生很多通知。
答案 0 :(得分:1)
尝试使用map函数返回的数组。
var accounts = [{balance: 23}, {balance: 3}, {balance: 2}]
var newAccounts = accounts.map(account => {
account.balance = 0;
return account;
});
this.set("accounts", newAccounts);