3

モデルのデータのロードをどこで処理するかについて、決定的なパターンを見つけるのに苦労しています。まず、$.ajaxEmber Data ではなく単純なラッパーを使用してデータをロードしていると言わなければなりません。

Discourse 開発者の 1 人からのこのブログ投稿を見るとreOpenClass、関連データをロードする静的メソッドをモデルに実装することを彼が推奨していることがわかります。

App.RedditLink.reopenClass({

  findAll: function(subreddit) {
    return $.getJSON("http://www.reddit.com/r/" + subreddit + "/.json?jsonp=?").then(
      function(response) {
        var links = [];
        response.data.children.forEach(function (child) {
          links.push(App.RedditLink.create(child.data));
        });
        return links;
      }
    );
  }

});

一方、Ember でのデータの処理に関する別のブログ投稿を見つけました。今回はラッパーを配置して$.ajax、コントローラーから呼び出しを行うことをお勧めします。

App.booksController = Em.Object.create({
  content: null,
  populate: function() {
    var controller = this;
    App.dataSource.fetchBooks(function(data) {
      controller.set('content', data);
    });
  }
});

これは好みの問題ですか、それともここで従うべき MVC の規則はありますか?

4

1 に答える 1