【发布时间】:2019-04-28 13:03:52
【问题描述】:
我有一个名为 screen-size 的服务,它有一个名为 width 的属性。 此属性是窗口宽度的值,将在调整大小事件时更新。
这很好用。在一个组件中,我有一个计算属性,我想在这个值发生变化时更新它......
nameStyle: computed('screenSizeService.width', function()
{
console.log('in computed');
return this.getFontSize(2.5, 2, null, null, this.$())
}),
这只会在开始时运行一次,除非我这样做......
nameStyle: computed('screenSizeService.width', function()
{
this.get('screenSizeService.width');
console.log('in computed');
return this.getFontSize(2.5, 2, null, null, this.$())
}),
然后它运行正常。 nameStyle的值与屏幕宽度没有直接关系,而是随着屏幕宽度的变化而变化的容器宽度。
这就是我从屏幕宽度读取的原因。
为什么我需要获取该值才能使其工作?为什么它不只是从它更改并运行该函数的时间开始计算?
【问题讨论】:
-
哦,好的。但是如果我不需要它的价值呢?我只知道当它改变时,x 需要更新
-
observers 也许(从未使用过 ember,所以请谨慎接受我的建议)...
-
我正在考虑使用观察者,只是听说了一些关于他们的坏事,还是试试看,谢谢!
-
@RachelDockter,不要使用观察者。相反,您可以使用
events,请参阅我的回答。
标签: javascript ember.js