3

我正在努力寻找一个明确的模式来处理我的模型的加载数据。首先,我应该说我正在使用一个简单的$.ajax包装器来加载我的数据,而不是 Ember 数据。

查看来自 Discourse 开发人员的这篇博文,您可以看到他建议在模型上实现一个静态方法,该方法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

2

采用第一种方法。您提到的第二篇博文来自 2012 年 1 月,这在 Ember 世界中是永恒的,不再是创建控制器的正确方法。您不再需要从头开始创建它们(使用 Em.Object.create())。如今,Ember.js 在您初始化应用程序时会为您执行此操作。如果我是你,我也会尝试更好地理解模型、路由和控制器在加载/管理数据时的作用。从 emberjs.com 指南开始。

无论如何,尽量远离 2012 年的博客文章,它们大多已经过时了。您还可以查看http://emberwatch.com的帖子,他们在及时了解 emberjs 信息方面做得很好。

于 2013-04-28T14:43:48.597 回答