我正在Ember创建一个实时应用程序。
每次收到更新时,我都会执行以下操作:
record = serializer.extractSingle(store, type, data);
store.update(socketModel, record);
更新是drawnNumbers
数组。
在我看来会发生这种情况;
{{#each bingoCard in ownBingoCards}}
<div class="col-sm-4">
<div class="table-responsive">
<span class="label label-primary">Card {{bingoCard.id}}</span>
<table class="table table-bordered table-card">
<tbody>
{{#each row in bingoCard.squares}}
<tr>
{{#each number in row itemController='number'}}
{{#if number}}
<td {{bind-attr class='isActive:active'}}>{{number.model}}</td>
{{else}}
<td>X</td>
{{/if}}
{{/each}}
</tr>
{{/each}}
</tbody>
</table>
</div>
</div>
{{/each}}
ownBingoCards
是计算属性
ownBingoCards: function () {
var gameId, userId;
gameId = this.get('id');
userId = this.get('session.content.id');
return this.get('store').filter('bingoCard', function (bingoCard) {
return (bingoCard.get('game.id') === gameId && bingoCard.get('user.id') === userId);
});
}.property('model.bingoCards', 'session.content'),
因此,每次将数字添加到drawnNumbers
数组时,都会将td
设置为active
。
唯一的问题是,我的整个观点让人感到非常迟钝。但是一旦我刷新浏览器,它就会停止重新渲染整个视图并只标记数字active
。为什么会这样?为什么需要刷新?