Ember.js 如何调试emberjs计算属性

Ember.js 如何调试emberjs计算属性,ember.js,Ember.js,假设我有一个依赖于其他属性的计算属性。如何找出依赖项属性上的哪个更改触发了对我的属性的重新计算。除此之外,还有什么方法可以调试计算链接吗?检查属性是否由notifyPropertyChange()方法触发。您可以使用notifyPropertyChange()方法触发计算属性。如果您的计算属性位于组件中,您可以尝试挂接到didUpdateAttrs钩子中didUpdateAttrs在传递到组件的值更新时激发。在DidUpdateATTR中,您可以通过比较旧值/新值来检查更改了哪些属性 did

假设我有一个依赖于其他属性的计算属性。如何找出依赖项属性上的哪个更改触发了对我的属性的重新计算。除此之外,还有什么方法可以调试计算链接吗?

检查属性是否由
notifyPropertyChange()
方法触发。您可以使用
notifyPropertyChange()
方法触发计算属性。

如果您的计算属性位于组件中,您可以尝试挂接到
didUpdateAttrs
钩子中<代码>didUpdateAttrs在传递到组件的值更新时激发。在DidUpdateATTR中,您可以通过比较旧值/新值来检查更改了哪些属性

  didUpdateAttrs: function(attrs) {
    // attrs should have access to the old/new values

  }

didUpdateAttrs在组件的属性发生更改时运行, 但当组件通过component.rerender重新渲染时, 或模板使用的模型或服务中的更改

在重新加载之前调用didUpdateAttrs,您可以使用此钩子 更改特定属性时执行代码。这个钩子可以是一个钩子 观察员的有效替代方案,因为它将在 重新渲染,但在属性更改后

此场景的一个示例是概要文件编辑器组件。 在编辑一个用户时,如果用户属性发生更改,则 可以使用didUpdateAttrs清除从中建立的任何错误状态 编辑上一个用户


也许
LOG\u绑定可以向您显示您需要的内容。


我要做的是在所依赖的计算机中。

我想没有简单的方法,您可能需要将computed属性与getter和setter一起使用,并与您以前的值进行比较。我查看源代码,以查看是否有任何未记录的功能可以从中受益;但是没有运气。也许你可以在余烬讨论会上提问,核心团队的某个人应该给出适当的答案。我相信你没有机会,只能依靠观察者而不是计算属性来了解属性的变化。祝你好运。请注意,在生命周期钩子方法中使用
attrs
是不可取的,而
notifyPropertyChange
被认为是私有API。我不鼓励使用它。这是一种气味;它的使用通常意味着代码需要重构。而且,它也不能回答这个问题。