2014-07-01 62 views
1

我正在使用Ruby on Rails API服務器學習Ember.js。我已經獲得了所有設置和工作的路線,模板和模型 - 但是一旦數據從API服務器加載,模板就不會重新渲染。我沒有收到任何錯誤消息,並且我知道客戶正在看着Ember檢查員加載。Ember.js在模型加載後不能重新呈現模板

客戶名單應該顯示正在從API服務器裝入正確start customer not being displayed

客戶名單後: customer is being loaded from the API

路由器

// javacripts/router.js 
App.Router.map(function() { 
    this.resource('customers', { path: "/" }); 
}); 

客戶路線

// javascripts/routes/customer_routes.js 
App.CustomersRoute = Ember.Route.extend({ 
    model: function() { 
    return this.store.find('customer'); 
    }, 
    renderTemplate: function() { 
    this.render('customers/index'); 
    } 
}); 

客戶模式

// javascripts/models/customer.js 
App.Customer = DS.Model.extend({ 
    name: DS.attr('string') 
}); 

客戶索引模板

// javacripts/templates/customers/index.js.handlebars 
<ul> 
    <li>start</li> 
    {{#each customers}} 
    <li>{{name}}</li> 
    {{/each}} 
</ul> 

商店

// javacripts/store.js 
App.ApplicationAdapter = DS.ActiveModelAdapter.extend({ 
    namespace: 'api/v1' 
}); 
+0

是否有任何實際加載,如你的應用程序模板文件? – Ryan

+0

@ryan - 它看起來像一切正在加載就好。 「application.js.handlebars」和「index.js.handlebars」都正在呈現。但索引中的{{#each}}'循環總是空的 – lightswitch05

+0

我想知道是因爲你使用的擴展是奇怪的。通常文件只是用'.handlebars'或'.hbs'擴展,我從來沒有見過'.js.handlebars'。 – Ryan

回答

1

而不是

{{#each customers}} 

它應該閱讀或者

{{#each controller}} 
    {{name}} 
{{/each}} 

{{#each customer in controller}} 
    {{customer.name}} 
{{/each}} 

我最近發佈了兩個截屏。一個展示如何開始使用新的應用程序,以及一個展示如何設置步兵:

你也可能會得到一些使用了一個演講中,我給了早些時候的這一年也是如此,它在談話期間通過開發一個簡單的應用程序,包括Ember Data。

1

您的客戶/索引模板引用一個 「大客戶」 集合不存在。

您的路線的模型掛鉤正在返回記錄數組,這使得Ember生成一個Ember.ArrayController,並將其模型設置爲您的客戶數組。它沒有名爲「customers」的屬性,所以{{#each customers}}沒有任何東西可以迭代。如果您將其更改爲{{#each}}(因爲此範圍中的this引用了類似數組的控制器)或{{#each model}}(顯式訪問ArrayController的模型數組),它應該正常工作。

另外,Route中的renderTemplate掛鉤是默認行爲,因此您可以將其刪除。

順便說一句,我建議在您開始學習基礎知識時只使用Ember JSBin或其他東西,所以當您需要尋求幫助時,您可以鏈接到垃圾箱,並且人們可以使用它們的實時代碼可以用最少的努力幫助你。進入門檻低的人對那些爲互聯網點免費工作的人有很大的不同。

+0

感謝您向我解釋範圍。現在它變得更有意義。不幸的是,我不能在Ember JSBin上開發這個應用程序,因爲我的API沒有公開 – lightswitch05

+1

如果你正在建立一個既定的API,那麼肯定。使用Ember Data的FixtureAdapter或者類似[Pretender](https://github.com/trek/pretender)或[Ember-CLI](http://iamstef.net/ember-cli/)的東西並不罕見儘管如此,API stub Express服務器正在開發中。如果你不希望服務器端開發hangups阻止你的前端開發,如果你正在合作,這會很有幫助。 –