我很难找到一个明确的模式来处理我的模型加载数据的位置。首先,我应该说我使用简单的$.ajax
包装器来加载我的数据而不是Ember数据。
查看this blog post from one of the Discourse developers,您可以看到他建议在模型上使用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;
}
);
}
});
另一方面,I found another blog post about handling data in Ember。这次建议在$.ajax
周围放置一个包装器并从Controller进行调用。
App.booksController = Em.Object.create({
content: null,
populate: function() {
var controller = this;
App.dataSource.fetchBooks(function(data) {
controller.set('content', data);
});
}
});
这是一个偏好问题还是在MVC中有一个约定我应该在这里跟随?
答案 0 :(得分:2)
采用第一种方法。你提到的第二篇博文是从2012年1月开始的,它在Ember世界中是永恒的,并不再是创建控制器的正确方法。您不应该需要从头开始创建它们(使用Em.Object.create())。现在,当您初始化应用程序时,Ember.js会为您执行此操作。如果我是你,我还会尝试在加载/管理数据时更好地理解模型,路径和控制器的作用。从emberjs.com指南开始。
无论如何,试图摆脱2012年的博客帖子,它们大多已经过时了。你也可以查看http://emberwatch.com的帖子,他们在保持最新的emberjs信息方面做得很好。