2012-12-09 58 views
2

我試圖在Ember.js中使用多個命名插座。我的方法是否正確?在Emberjs中使用多個命名插座和無內容封裝視圖

標記:

<script type="text/x-handlebars" data-template-name="application"> 
    <div id="mainArea"> 
     {{outlet main_area}} 
    </div> 
</script> 

<script type="text/x-handlebars" data-template-name="home"> 
    <ul id="sections"> 
     {{outlet sections}} 
    </ul> 
    <ul id="categories"> 
     {{outlet categories}} 
    </ul> 
</script> 

<script type="text/x-handlebars" data-template-name="sections"> 
    {{#each section in controller}} 
     <li><img {{bindAttr src="section.image"}}></li> 
    {{/each}} 
</script> 

<script type="text/x-handlebars" data-template-name="categories"> 
    {{#each category in controller}} 
     <img {{bindAttr src="category.image"}}> 
    {{/each}} 
</script>​ 

JS代碼:

在這裏,我設置各種控制器數據的內容從服務器抓住並與它們的對應的觀點連接插座。由於HomeController中沒有的內容,其內容設置爲空對象 - 一個黑客獲得擺脫這種錯誤消息:

Uncaught Error: assertion failed: Cannot delegate set('categories' ) to the 'content' property of object proxy : its 'content' is undefined.

App.Router = Ember.Router.extend({ 
    enableLogging: false, 
    root: Ember.Route.extend({ 
    index: Ember.Route.extend({ 
     route: '/', 

     connectOutlets: function(router){ 
      router.get('sectionsController').set('content',App.Section.find()); 
      router.get('categoriesController').set('content', App.Category.find()); 
      router.get('applicationController').connectOutlet('main_area', 'home'); 
      router.get('homeController').connectOutlet('home', {}); 
      router.get('homeController').connectOutlet('categories', 'categories'); 
      router.get('homeController').connectOutlet('sections', 'sections'); 
      } 
     }) 
    }) 
}); 

+0

你能爲此做一個jsFiddle嗎?這對於發現問題將會非常有幫助,而且你更有可能得到答案。 – Aras

+0

一個jsFiddle會很有幫助,因爲你發佈的代碼本身看起來是正確的。需要更多的上下文來幫助你:) – adivis

回答

5

如果它的任何幫助,我得到這個錯誤因爲我連接的是Ember.ObjectController而不是Ember.Controller。

+0

它解決了我對同樣的問題:)謝謝 – AyKarsi