在我的餘燼的應用程序,我得到使用Ajax調用從語篇的聯合創始人的博客文章複製所有的餐館名單http://eviltrout.com/2013/02/27/adding-to-discourse-part-1.html渲染一個項目從列表中餘燼
App.Restaurant.reopenClass({
findAll: function() {
return $.getJSON("restaurants").then(
function(response) {
var links = Em.A();
response.restaurants.map(function (attrs) {
links.pushObject(App.Restaurant.create(attrs));
});
return links;
}
);
},
我有一個餐廳路由集合達它調用以上所示的的findAll和它呈現到餐館顯示爲restaurants
模板這樣一個鏈接到每個單獨的餐廳的應用程序模板
App.RestaurantsRoute = Ember.Route.extend({
model: function(params) {
return(App.Restaurant.findAll(params));
},
renderTemplate: function() {
this.render('restaurants', {into: 'application'});
}
});
。我還包含了restaurant
模板
<script type="text/x-handlebars" id="restaurants">
<div class='span4'>
{{#each item in model}}
<li> {{#link-to 'restaurant' item}}
{{ item.name }}
{{/link-to }}</li>
{{/each}}
</ul>
</div>
<div class="span4 offset4">
{{ outlet}}
</div>
</script>
在灰燼路由器,我已經建立了這樣的
this.resource("restaurants", function(){
this.resource("restaurant", { path: ':restaurant_id'});
});
因此父/子路線,我希望,當我點擊鏈接到餐館列表中的特定的餐廳,它會插入這個restaurant
模板到在restaurantS
(複數)定義的模板outlet
<script type="text/x-handlebars" id="restaurant">
this text is getting rendered
{{ item }} //item nor item.name are getting rendered
</script>
這家餐廳的模板是越來越呈現,但是,沒有得到顯示爲item
數據。
當我在列表中單擊{{#link-to 'restaurant' item}}
,item
表示餐廳。
在這個設置中,Ember是否需要另一個Ajax調用來檢索該特定項目,即使它已經從findAll
調用中加載?
在說我需要(再次)查詢各個餐廳的事件中,我創建了一個新的路線爲個體餐廳
App.RestaurantRoute = Ember.Route.extend({
model: function(params) {
console.log(params);
console.log('resto');
return App.Restaurant.findItem(params);
}
});
,並在餐廳模型
App.Restaurant.reopenClass({
findItem: function(){
console.log('is this getting called? No...');
return 'blah'
}
一則findItem但沒有一個console.logs被調用。
在Ember初學者視頻https://www.youtube.com/watch?v=1QHrlFlaXdI中,當Tom Dale點擊列表中的博客帖子時,該帖子將出現在爲其定義的模板中,而不必像設置路線那樣做任何事情帖子模板中的{{outlet}}接收帖子。
你可以看到爲什麼同樣是在此情況下爲我工作?
非常感謝。我不知道這個問題是什麼,因爲Ember沒有拋出任何類型的錯誤信息。我想知道爲什麼它不會告訴我模板中沒有「項目」 – Leahcim