1

我有一个纸板,我通过调用得到一张卡片列表:cardboard.getCards()

我想更新其中一些卡片的颜色,所以我遍历卡片,当我找到想要更新的卡片时,我执行以下操作:

    var record   = card.getRecord();
    var newColor = '#ff0000';

    record.set('DisplayColor', newColor);

...但它不会改变卡。但是,如果我因为 beforecarddroppedsave 事件而调用相同的代码,颜色会立即改变。

通过一些实验,如果我遵循 record.set() 行,我有一个解决方案:

    this.outstandingUpdates++;
    record.save({callback: function() {
        if (--this.outstandingUpdates === 0) {
            this.cardboard.refresh();
        }
    }, scope: this});

...但是它有点难看,因为您看到板刷新,并且似乎应该有更好的方法来做到这一点,以便它的行为就像从 beforecarddroppedsave 事件中调用时一样(如果不是这样,只有一个回调而不必计算更新)。

有没有更好、不那么难看的方法,不需要刷新整个纸板?

4

1 回答 1

1

这些卡片有一个reRender方法(它是私有的——不知道为什么——你必须显示私有方法才能在文档中看到它)。这就是所有 Rally 应用程序刷新单个卡片的方式。

所以使用 reRender 的简化代码将是:

record.set('DisplayColor', color);
record.save({callback: function() { card.reRender(); });
于 2014-01-06T17:31:54.033 回答