0

関連情報: Ember 1.11.1 Ember Data 1.0.0-beta.16 Ember CLI

アプリケーション内でメトリック用の再利用可能なコンポーネントを作成しようとしています。コンポーネント内から、選択したオプションを使用してクエリを実行します。問題は、ネットワーク リクエストが適切に開始されていることを確認しても、Ember オブジェクトに入力されないことです。

ここに私のコンポーネントコードがあります:

import Ember from 'ember';

var arr = Ember.ArrayProxy.extend(Ember.PromiseProxyMixin);

export default Ember.Component.extend({
store: Ember.inject.service(),
type: null,
startTime: null,
finishTime: null,
interval: 0,
detail: false,

didInsertElement: function() {
    // Ensure we have the latest metric types
    this.set('metricTypes', arr.create({
        promise: this.get('store').find('metric-type')
    }));
},

data: function() {
    var results = this.metricQuery();
    return results;
}.property(),


/* NOT PROPERTIES */

metricQuery: function() {
    return this.get('store')
               .find('metric-query', { type: this.get('type'),
                                       startTime: this.get('startTime'),
                                       finishTime: this.get('finishTime'),
                                       interval: this.get('interval'),
                                       detail: this.get('detail') });
}
});

metricTypes が返され、Ember オブジェクトに正しく設定されます。しかし、metricQuery 関数が実行されると、オブジェクトは設定されません。インスペクタにプロパティが表示されますが、コンテンツがありません。ただし、ネットワーク要求が正しいデータとサイドロードされたデータで正しく送信され、次のように返されることがわかります。

{"metricQuery":{
    "id":"00000000-0000-0000-0000-000000000000",
    "metricType":["c47707e1-a9d1-420a-87b6-4e65b77e6a58"],
    "metricResult":"1035be30-cf6e-4425-ac58-d0e2fd2cf7b1"},

"metricResult":{... data... }

"metricType":[{.... data....}]}

しかし、Ember インスペクターでオブジェクトを見ると、空のコンテンツが表示されます。ストアを使用してコンポーネント内からデータを取得しようとしたのはこれが初めてで、何が間違っているのかわかりません。

metricQuery の検索から返されるデータにアクセスするにはどうすればよいですか?

助けてくれてありがとう。

4

1 に答える 1

0

上記のコメントで Kingpin2k が述べたように、私の問題は、コレクションを予期していたときに、metricQuery の API からの戻り値が単一のエンティティであったことでした。API の戻り値を次のように変更しました。

metricQuery { ...data...}

に:

metricQuery [{ ...data...}]

すべてが完璧に機能しました。

于 2015-05-27T13:43:10.373 に答える