我有两个相关模型,一个Order
,其中包含多个Payment
s。
Order
也有total
属性。每个Payment
是总数的percentage
。因此,当total
发生变化时,每个payment
会对其进行观察并计算其部分total
。
我的问题源于这样一个事实:Order
还有Ember.computed.sum
这些总数,如果百分比还不是100%。
Ember.js发出"Assertion Failed: You modified computedTotal twice on <iec-jbe@component:order-form::ember906> in a single render. This was unreliable and slow in Ember 1.x and is no longer supported. See https://github.com/emberjs/ember.js/issues/13948 for more details."
。
我理解为什么会发生这种情况,但我无法找到更好的方法去做我需要做的事情。谁能在这帮助我?
答案 0 :(得分:2)
我认为你应该重构,不要使用观察员。只需使用total
的计算属性,并在setter中执行逻辑。
答案 1 :(得分:1)
我按照Ebrahim Pasbani在评论中的建议使用Ember.run.once
解决了这个问题,并在此进一步发展:Observers。
这可能不是最好的解决方案,但由于我们项目的状态非常先进,因此使用计算属性而不是一个观察者进行重构会意味着进行如此多的更改并不值得。我这样说是为了清楚这对于大多数情况而言不是最好的解决方案,它只是这种特殊情况下的最佳解决方案。