我有一個簡單的類,Event
與計算屬性:更新奧裏利亞觀察變化特性包含陣列
import moment from 'moment';
export class Event {
constructor(data) {
Object.assign(this, data);
}
get playedFromNow() {
return moment(this.CreateDate).fromNow();
}
}
playedFromNow
只是返回基於CreateDate
屬性的字符串,如7 minutes ago
。
viewmodel獲取事件數組,視圖呈現事件。每次發生新事件時(每隔幾分鐘),通過websockets更新數組。
<div repeat.for="event of events">
<div class="media-body">
<h4 class="media-heading">${event.title} <small>${event.playedFromNow}</small></h4>
</div>
</div>
而且(相關)視圖模型代碼:
let socket = io();
socket.on(`new-event`, (data) => {
this.events.unshift(new Event(data)); // add to the event array at the top
});
// subscribe
let subscription = bindingEngine.collectionObserver(this.events).subscribe();
// unsubscribe
subscription.dispose();
目前該屬性髒檢查,這意味着該屬性被選中,變化非常頻繁 - 這是一個有點不必要的,也有很多顯示在屏幕上的事件,所以我關心隨着時間的推移表現。有沒有一種方法可以根據VM中的數組綁定和更新代碼觸發重新計算?:
按照你的回答,並在我的web-sockets事件中放置一個'signaler.signal('new-event')'也很好。謝謝! – conradj