あなたがモデルに計算されたプロパティを持つ一般的なシナリオで始まるのをしてみましょう:Emberjsキャッチ= 22 - hasManyの関連するオブジェクトを数える親計算プロパティを
モデル/ coney.js
bunniesTotal: Ember.computed.alias('babyBunnies.length')
は言うことができますアプリケーションへのエントリポイントはすべてConeys
を示すインデックスページである:
routes/coneys/index
のみ50が表示されるので、APIは、すべてのConeys
を返しますが、それがページングます
各コニー(親ウサギ)にはすべての子供が付いています(それは少数しかありません。彼らは唯一のものですからlittl'uns - すなわち。小さなペイロード!)
したがって、bunniesTotal
は常に正確で、coneys/index
ページのリストの各Coney
に表示されます。素晴らしい、すばらしい、Emberのチュートリアルのどこにでも見られる共通の例です。 エンバーの良さ。
さらにエンバーの良さ - 新しいBabyBunnyはエンバー
ストアにあるため、彼らは、戻っ
ウォーレン。 Watership Down、さあ!/coneyes/index
に来たときに、ユーザーが訪問
/coneys/new.js
と新しい
Coney
といくつかの
BabyBunnies
を追加した後、ユーザーは、自動的に上記の
bunniesTotal
アップデートが表示されます
今度は、将来に向かって、
データ
ウォーレンを調整しましょう。ええとああ。
今Coneysは(図を行く、ええ、ウサギ!)の子供たちと、おそらくあまりにも孫の何千もの数千を持っている
それはすべてのためのすべてのBabyBunniesをロードするために、coneys/index
ページに、今、意味がありません。最初のヒット曲は50曲。良くない。
APIを変更してBabyBunnies
を削除して、それぞれConey
が個別に要求するようにしてください(例:coneys/edit
に行く場合など)。
...カウントについてはどうしますか?今、クライアントは、各親が持つ子供の数を知らない。
Emberの代わりにAPIの各親にプロパティを含めることができます。これで、サーバー上の子供を数え、その合計をEmberに送信します。たぶんmeta.children_total
またはモデル上のプロパティ。うんいいね。
ただし、ユーザーがクライアントに子を追加すると、合計は自動的に更新されません。 Ember goodnessを失ってしまい、インデックスページがユーザーの視点で「劣化」しています。
ユーザーは、新しい「子」を追加してconeys/index
にリダイレクトされた後、合計更新が表示されません。彼らは何かが間違っていると思うでしょう。何が新しい
赤ちゃんのウサギに起こった
子供私はちょうど作成しましたか?
そのような小さな時間旅行のエッセイの後、ここに質問があります。
このCatch-22を解決するEmberの方法はありますか?
子を追加した後、親をバックグラウンドでリフレッシュすることがあります。または親のメタデータ、または他のEmberの魔法を要求する方法?
私はds-referencesとその機能で起こったdiscussionを見ましたが、この問題の推奨される解決策が何であるかを知る助けにならなかった。そのDS-参考文献に
UPDATE
この文はありリンク:
は
レコードまたは関係について、サーバが提供するメタデータを取得このコード:
var meta = post.hasMany('comments').meta();
console.log(`${commentIds.length} comments out of ${meta.total}`);
これは、サーバーから提供されたBabyBunnies(子)にメタベースを持つことを意味しています。 meta.total
はすべての子供の合計となります。
しかし、それは、さらに2つの質問につながる:
エンバーは、新しい合計を取得しない方法ユーザーが新しい赤ちゃんを追加し、ストア/ウォーレンと ので、それをサーバーに保存し、?それは単に合計を取得するだけの背景マジック を行うのですか?私はそうではないと思われます。 私は手動でBabyBunniesエンドポイントを要求して、ちょうど新しい合計を にする必要があります。
は何というメタ合計は、実際に '生' の合計ではありませんが、この場合:
meta.totalFemaleBabyBunnies
meta.totalMaleBabyBunnies
私はどのようにエンバーが表示されませんBabyBunniesエンドポイントの更新をトリガーすることなく、このような合計を更新することができます(これは、新しいBabyが追加されるたびにそのことを意味します)。
Haあなたはこの問題を抱えていましたか?もしそうなら、あなたはそれを解決するために何をしましたか?