我有一个简单的类,Event具有计算属性:
import moment from 'moment';
export class Event {
constructor(data) {
Object.assign(this, data);
}
get playedFromNow() {
return moment(this.CreateDate).fromNow();
}
}
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
和(相关)viewmodel代码:
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();
Run Code Online (Sandbox Code Playgroud)
目前该属性是脏的检查,这意味着该属性被检查并经常更改 - 这是有点不必要的,屏幕上显示了很多事件,所以我担心随着时间的推移性能.有没有办法可以根据数组绑定触发重新计算并更新VM中的代码?: