2013-09-11 29 views
0

在我的餘燼的應用程序,我得到使用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}}接收帖子。

你可以看到爲什麼同樣是在此情況下爲我工作?

回答

0

當您導航到restaurant路線時,item將爲該路線的model

所以在你的模板,如果你嘗試

<script type="text/x-handlebars" id="restaurant"> 
    this text is getting rendered 
    {{ model.name }}  
    </script> 

您可以看到餐廳

而且還模型鉤不叫,並且進一步console.log s爲名稱不工作,
因爲

注:與動態段的路由只會有它時,它是通過URL進入所謂的模型掛鉤。如果通過轉換輸入路線(例如,在使用鏈接到Handlebars助手的情況下),則已經提供模型上下文並且不執行掛鉤。沒有動態段的路線將始終執行模型掛鉤。

希望一切都會明朗。

+0

非常感謝。我不知道這個問題是什麼,因爲Ember沒有拋出任何類型的錯誤信息。我想知道爲什麼它不會告訴我模板中沒有「項目」 – Leahcim