2013-04-28 74 views
3

我很努力地爲我的模型找到處理加載數據的確切模式。首先,我應該說我正在使用一個簡單的$.ajax包裝來加載我的數據而不是Ember Data。模型或控制器應該在Ember JS中加載數據嗎?

看着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中有一個約定我應該在這裏跟隨?

回答

2

用第一種方法。你提到的第二篇博客文章是從2012年1月開始的,在Ember世界裏這是永恆的,並不是創建控制器的正確方式。您不需要從頭開始創建它們(使用Em.Object.create())。如今,Ember.js在你初始化應用程序時爲你做這件事。如果我是你,我還會嘗試在加載/管理數據時更好地理解模型,路線和控制器的作用。從這個emberjs.com指南開始。

在任何情況下,儘量擺脫2012年的博客文章,他們大多是過時的。您還可以查看http://emberwatch.com的帖子,他們在保持最新的emberjs信息方面做得非常出色。

相關問題