2012-09-25 3 views
8

特定のリソース(App.User)の行数がどれだけあるかを知る必要があります。emberデータ `find`または` findAll`リクエストの総行数の返り値

私は応答で返そうとしましたが、Emberはマップされていないプロパティについて不満を持ち、レコードの配列(users: [ "john", "fred"])しか期待していません。私はサーバーに追加のクエリを作成したくありません。

Emberでこれを達成するためのクリーンな方法はありますか?

+0

+1、私は[ページ設定]のコンテキストでこれについて疑問に思っていた(http://stackoverflow.com/questions/12482977/does-a-pagination-mixin-exist-for-ember-js-yet) – dechov

+0

まさに!私は、結果セットの合計レコード数を知り、ページ設定に使用する必要があります... – korCZis

答えて

4

サーバーに追加のクエリを行う必要はありません。あなたは、サーバーからデータストア内のデータを取得したら、それはいくつかのレコードが汚れていると、あなたがそうstore.commit

を実行しない限り、そこにとどまり、あなたが

users = App.User.find() 

を言って、あなたのレコードを取得した後、あなたは、単にusers.get('length')を行うことができますし、あなたは長さを得るでしょう。これを行うと、サーバーへの追加のクエリは生成されません。

4

これをハンドルバーテンプレートに使用する場合は、{{this.length}}を使用できます。

0

handleResponseをアダプタに実装し、Emberが期待している方法で応答を変更することで、この問題を解決しました。

のは、私はこれに似たサーバからの応答を取得するとしましょう:

handleResponse実装は次のようになります。

handleResponse (status, headers, payload, requestData) { 
    let parsedPayload = { 
    users: payload.users, 
    meta: { 
     total: payload.count 
    } 
    }; 
    return this._super(status, headers, parsedPayload, requestData); 
} 

その後、私はEmber documentation specifies it

方法でモデルメタデータを取得することができます
関連する問題