2013-10-21 48 views
1

我有問題添加一個數組控制器作爲另一個數組控制器的項目控制器。EmberJS:ArrayController - > ArrayController - > ObjectController錯誤

錯誤,我得到的是:

Error while loading route: TypeError {} ember.min.js:15
Uncaught TypeError: Object # has no method 'addArrayObserver'

的jsfiddle:http://jsfiddle.net/t5Uyr/3/

這裏是我的HTML:

<script type="text/x-handlebars"> 
    <table> 
     <thead> 
      <tr> 
       <th>id</th> 
       <th>items</th> 
      </tr> 
     </thead> 
     <tbody> 
      {{#each}} 
      <tr> 
       <td>{{id}}</td> 
       <td> 
        <ul> 
        {{#each items}} 
         <li>{{formattedName}}</li> 
        {{/each}} 
        </ul> 
       </td> 
      </tr> 
      {{/each}} 
     </tbody> 
    </table> 
</script> 

正如你所看到的,在模板中我遍歷集合數據與每個循環,每個循環內我想迭代數據的子集合。

這裏是我的JS代碼:

window.App = Ember.Application.create({}); 

App.ApplicationRoute = Ember.Route.extend({ 

    model: function() { 

     var data = [ 
      { 
       id: "111", 
       items: [ 
        { 
         name: "foo" 
        }, 
        { 
         name: "bar" 
        } 
       ] 
      }, 
      { 
       id: "222", 
       items: [ 
        { 
         name: "hello" 
        }, 
        { 
         name: "world" 
        } 
       ] 
      } 
     ]; 

     return data; 

    } 

}); 

App.ApplicationController = Ember.ArrayController.extend({ 

    itemController: "row" 

}); 

App.RowController = Ember.ArrayController.extend({ 

    itemController: "item" 

}); 

App.ItemController = Ember.ObjectController.extend({ 

    formattedName: function() { 
     return "My name is " + this.get("name"); 
    }.property("name") 

}); 

回答

2

App.RowController應該是一個objectController您的項目(行)是一個數組對象的屬性之一,而不是數組本身... 可以assing內部的控制器直接從App.RowController中刪除itemController。

的JavaScript

App.RowController = Ember.ObjectController.extend() 

把手

{{each items itemController='item'}} 

的jsfiddle http://jsfiddle.net/mUJAa/3/

+0

你能更具體?該代碼段中混合了JavaScript和句柄代碼? {{每個...去哪裏?你可以在我的JSFiddle中看到我嗎? –

+0

我試過了,它不能很好地工作。你能看看我的jsfiddle嗎? –

+0

對不起,我編輯了答案,我現在用手機... – Edu

相關問題