Ember 观察者不处理嵌套 属性

Ember observer not working on nested property

我创建了一个模拟应用程序来说明我面临的情况:Mock App

在此应用程序中;我创建了一个带有单个布尔值 属性 的服务和一个切换 属性 (x) 的函数;和两个组件(一个用于切换服务的 属性;另一个用于观察切换次数并显示)。观察者位于toggle-observer。它直接添加到服务的 属性 作为:myService.x。代码无法正常工作;但是,如果 toggle-observer.js 第 14 行的注释被注释掉;观察者开始工作。

我的问题是,我是否需要对嵌套观察器 属性 的整个路径执行 get 才能使其正常工作?这是预期的行为吗?如果是这样,有人可以解释为什么吗?谨致问候。

注意:这是一个模拟案例来说明案例;它与我在真实应用程序中设计的任何东西都无关。我尽量避开观察者;但我 运行 在尝试某事时陷入这种情况。并决定问一问。

来自ember指南service

Injected properties are lazy loaded; meaning the service will not be instantiated until the property is explicitly called. Therefore you need to access services in your component using the get function otherwise you might get an undefined.

来自 ember 指南,unconsumed computed properties do not trigger observers。 结合以上两个概念,我们可以得出以下结论,

您还没有在 toggle-observer 组件中使用 myService 任何 属性 因此在您显式调用 get 函数之前它将是 undefined 或在模板中使用它。

除非你在toggle-observer组件中使用x属性,否则它不会触发观察者。您需要在 toggle-observer.hbs 文件或 init 方法中使用它。