javascript – 在更改为包含数组时更新Aurelia观察到的属性
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 在更改为包含数组时更新Aurelia观察到的属性,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1977字,纯文字阅读大概需要3分钟。
内容图文
![javascript – 在更改为包含数组时更新Aurelia观察到的属性](/upload/InfoBanner/zyjiaocheng/757/96be9428cb464cefb33d89ffe0f82de0.jpg)
我有一个简单的类,具有计算属性的事件:
import moment from 'moment';
export class Event {
constructor(data) {
Object.assign(this, data);
}
get playedFromNow() {
return moment(this.CreateDate).fromNow();
}
}
playingFromNow只返回一个基于CreateDate属性的字符串,就像7分钟前一样.
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>
和(相关)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();
目前该属性是脏的检查,这意味着该属性被检查并经常更改 – 这是有点不必要的,屏幕上显示了很多事件,所以我担心随着时间的推移性能.有没有办法可以根据数组绑定触发重新计算并更新VM中的代码?:
解决方法:
最新的aurelia版本有一个新功能:binding behaviors将有助于此用例.
第一步是从视图模型中删除playingFromNow属性.我们将把逻辑放在一个值转换器中以消除脏检查并使逻辑能够在其他视图中重用:
从-now.js
import moment from 'moment';
export class FromNowValueConverter {
toView(date) {
return moment(date).fromNow();
}
}
现在让我们更新我们的视图以使用值转换器以及内置的信号绑定行为.有了信号,我们就能告诉绑定何时刷新.
将${event.playedFromNow}更改为:
${event.CreateDate | fromNow & signal:'tick'}
简单来说,这个绑定表示,使用fromNow转换器转换日期值,并在每次发出滴答信号时刷新绑定.
不要忘记在视图顶部导入值转换器:
<!-- this goes at the top of any view using the FromNowValueConverter -->
<require from="./from-now"></require>
最后,让我们定期点击滴答信号……每分钟?
import {BindingSignaler} from 'aurelia-templating-resources';
@inject(BindingSignaler)
export class App {
constructor(signaler) {
// refresh all bindings with the signal name "tick" every minute:
setInterval(() => signaler.signal('tick'), 60 * 1000);
}
}
内容总结
以上是互联网集市为您收集整理的javascript – 在更改为包含数组时更新Aurelia观察到的属性全部内容,希望文章能够帮你解决javascript – 在更改为包含数组时更新Aurelia观察到的属性所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。