我的问题有两个:
放置某种轮询逻辑的最佳位置在哪里 - 在路由文件中对吗?
如何将这个不断更新的值从 Route 传递给某个子组件?将某个变量标记为“
@tracked
”,然后通过model
钩子传递跟踪变量?
假设我有这样的事情:
routes/index.js
export default class IndexRoute extends Route {
@tracked
recent: {
A: 0,
...
},
constructor() {
super(...arguments);
this.getRecent();
}
getRecent() {
// poll data / fetch latest
const {A, ...partialObject} = this.recent;
this.recent = { ...partialObject, A: <some new value fetched>};;
later(this, this.getRecent, 2000);
}
model() {
return this.recent;
}
}
application.hbs
<p>constantly updating "this.recent": {{ this.model.A }} </p>
我想如果我像这样使用模型钩子,它将被跟踪并因此自动更新,但事实并非如此。我有这个示例Ember Twiddle可以模拟我正在尝试做的事情。我试图通过重新分配整个变量来强制重新计算,但它没有用。
这个问题比我最初的问题更深入。