1

計算されたプロパティに問題があります。

の複雑な操作ArrayControllerです。問題は、データが読み込まれる前に Ember が計算を試みることです。例えば、その一部は

var counts = this.getEach('hours').forEach(function(hours) {
  var d = hours.find(function(_hour) {
    return +(_hour.date.substring(11, 13)) === 10;
  });
  return d.count;
});

this.getEach('hours')次のようなものを返すため、エラーが発生します

[ Array[24], undefined ]

AJAX リクエストの読み込み中のため、コードが壊れます。

他の人が以前にこれに遭遇したと確信しています-解決策は何ですか?

更新:データを取得する方法は次のとおりです。ユーザーがビュー内の月をクリックすると、クリックされた月の ID が my.xml に渡されますMonthsController。メソッドがありtoggleMonthます:

App.MonthsController = Ember.ArrayController.extend({
    toggleMonth: function(id) {
        var month = App.Month.find(id),
            index = this.indexOf(month);
        if (index === -1) {
            this.pushObject(month);
        } else {
            this.removeAt(index);
        }
    }
});

App.Month.find(id)正しい AjaX リクエストを送信し、データが返されますが、おそらくこれは月のコントローラーを設定する正しい方法ではありません。

また、これは 内で発生していますIndexRoute(つまり、 の別のルートはありません。そのため、MonthsControllerモデル フックや.setupControllerMonthsController

4

1 に答える 1

0

この問題への一般的なアプローチはプロミスです。非同期リクエストはすぐにプロミスを返します。これは基本的に値のプロミスであり、後で解決できます。すべての Ember モデルは、舞台裏での約束です。ember モデルを promises として参照し、 Ember の Promises は Promises 全般、特に jQuery の Promisesとどのように関連していますか?

コードの最初のブロックのコンテキストを説明していただけますか? そのブロックには何がthisあり、いつ実行されますか?this.getEach('hours').forEach

于 2013-07-27T20:21:27.073 に答える