假设我有一个计算属性,它依赖于其他属性。如何找出哪个依赖属性的更改会触发我的属性重新计算。除此之外,还有没有办法调试计算链?
假设我有一个计算属性,它依赖于其他属性。如何找出哪个依赖属性的更改会触发我的属性重新计算。除此之外,还有没有办法调试计算链?
检查属性是否由 notifyPropertyChange()
方法触发。您可以使用 notifyPropertyChange()
方法来触发计算属性。
notifyPropertyChange
被认为是私有 API。我不鼓励它的使用。这样做会让代码出现异味;通常意味着需要重构代码。另外,它并不能回答问题。 - givanseLOG_BINDINGS
可以展示你所需的内容。
https://guides.emberjs.com/v2.14.0/configuring-ember/debugging/#toc_log-object-bindings
我会在被依赖的计算属性中 设置断点。didUpdateAttrs
钩子。当传递给组件的值更新时,didUpdateAttrs
会触发。在didUpdateAttrs
中,您可以通过比较旧值和新值来检查哪些属性已更改。 didUpdateAttrs: function(attrs) {
// attrs should have access to the old/new values
}
https://guides.emberjs.com/v2.6.0/components/the-component-lifecycle/
didUpdateAttrs 是在组件属性变化时运行的,但不是在通过 component.rerender、component.set 或模板使用的模型或服务的更改时重新渲染组件时运行的。 didUpdateAttrs 在重新渲染之前被调用,您可以使用此钩子来执行特定属性更改时的代码。这个钩子可以是观察者的有效替代方案,因为它将在重新渲染之前但属性更改后运行。 此场景中的一个示例就是个人资料编辑器组件。当你正在编辑一个用户,用户属性发生变化时,你可以使用 didUpdateAttrs 来清除从编辑上一个用户生成的任何错误状态。attrs
已被弃用。 - Ember Freak