私は経験豊富なEmber.js開発者です。ガイドでは、計算されたプロパティの例を完全な名前(同期、簡単、姓と名義に依存)で見つけることができます。野生では、ただし、非同期的な方法でコンピューティングプロパティの使用法がたくさんあることがわかります(例えば、最初の実行と戻り値はundefined
)。Ember Computedプロパティは非同期コードで使用する/含まれることを意味しましたか?
この非同期の計算プロパティを見ると、計算されたプロパティが非同期コードで使用されることが増えています。それはトラブルを求めていませんか?
一般的な問題は、他のComputed Property(CP2)が非同期CP1に依存していることです。 CP2はCP1を取得しますが、undefined
を取得します(CP1は後で非同期で値を設定するため)。 CP2はCP2(undefined
)の間違った値で計算を終了します。 CP1はそれ自身を設定しますが、CP2はテンプレート内で参照されないため(CP1が変更されたときに常に再計算され、その値が常に必要です)、CP2はそれ以上再計算されません一部のJavaScript呼び出しで参照されます。
実際の例は、注文のアイテムに基づいた(電子商取引店からの)合計注文の計算です。計算されたプロパティは、アイテムとの非同期関係に依存します。これには、税タイプなどの他の非同期関係が含まれる可能性があります。
私は 'items. @。price'をこのフォーマットで使用していませんが、これは有効ですか? 'items. @ each.price'はこれに違いがありますか? – kumkanillam
ああ、タイプミスです。それは@eachでなければなりません。あなたは正しいです。 – kasperite
あなたの答えの残りの部分が貴重なものだと私はあなたの解決策に同意しません。より多くのアイデアを待ちます。 :) –