通知更改列表中的对象属性

时间:2016-07-15 00:12:21

标签: polymer polymer-1.0

我有一个名为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会产生很多通知。

1 个答案:

答案 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);