aurelia不动产观察员

时间:2019-03-15 21:30:48

标签: javascript typescript aurelia aurelia-binding

伙计,

我有一个ViewModel,它向其构造函数中注入了一个单例。 然后,在构造函数中,我在单例实例的属性上创建一个观察者。

在detached()函数中,我处理了观察者订阅。

_dbContext.Remove(oldItem);

发生的事情是,每次我导航到页面时,都会创建一个ViewModel的新实例,并且当我离开页面时,将调用分离的对象。 (我预计会发生)。

但是,观察者并没有被删除/处置,并且ViewModel的实例仍保留在内存中。当'state'值更改并触发onStateChanged时,它将对所有已创建的页面实例数进行更改。即我导航到/离开页面的次数。

这在记录调试语句时非常明显。

observer.dispose()是否应删除观察者? 我的ViewModel实例也不应该处置吗?

谢谢

Donal

1 个答案:

答案 0 :(得分:0)

观察者应该只放置在您的代码中,如从本示例https://codesandbox.io/s/ovvp7m05o5

中所见
  • 着陆时,单击文档中的任意位置将增加计数器+日志Click changed called
  • 导航到第2页时,单击任意位置将增加计数器+而不记录Click changed called

我认为您不小心覆盖了课堂上的观察者参考。在构造函数中一次创建的观察者永远无法再被引用以正确处理。