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
方法中使用它。
我创建了一个模拟应用程序来说明我面临的情况: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
方法中使用它。