我有纸板,我通过调用显示卡片列表:cardboard.getCards()
我想更新其中一些卡的颜色,所以我遍历卡片,当我找到一个我要更新的卡片时,我会执行以下操作:
var record = card.getRecord();
var newColor = '#ff0000';
record.set('DisplayColor', newColor);
...但它不会改变卡片。但是,如果我因为beforecarddroppedave事件而调用相同的代码,则颜色会立即更改。
通过一些实验,我有一个解决方案,如果我遵循record.set()行:
this.outstandingUpdates++;
record.save({callback: function() {
if (--this.outstandingUpdates === 0) {
this.cardboard.refresh();
}
}, scope: this});
...但是它有点难看,因为你看到电路板刷新,似乎应该有一个更好的方法来做到这一点,就像从beforecarddroppedsave事件中调用一样(如果不是那样,只是有一个回调,而不必计算更新)。
有没有一种更好,更简单的方法可以做到这一点,不需要刷新整个纸板?
答案 0 :(得分:1)
这些卡片有一个reRender方法(它是私有的 - 不知道为什么 - 你必须在文档中显示私有方法才能看到它)。这就是所有Rally应用程序刷新个人卡片的方式。
因此使用reRender的简化代码将是:
record.set('DisplayColor', color);
record.save({callback: function() { card.reRender(); });