2012-11-03 6 views
6

Dość proste pytanie Ember tutaj (mam nadzieję!).Błąd dziennika rutera Ember: "Zawartość Ember.CollectionView musi implementować Ember.Array"

Mam prostą konfigurację danych Ember. Jedna aplikacja ma wiele wersji. Oto mój model aplikacji:

App.App = DS.Model.extend({ 
    name: DS.attr('string'), 
    publicKey: DS.attr('string'), 
    versions: DS.hasMany('App.Version', { key: 'version_ids' }) 
}); 

Mój router jest dość prosta:

App.Router = Ember.Router.extend({ 
    location: 'hash', 
    root: Ember.Route.extend({ 
    index: Ember.Route.extend({ 
     route: '/', 
     redirectsTo: 'dashboard' 
    }), 
    dashboard: ..., 
    app: Ember.Route.extend({ 
     route: '/:app_id', 
     connectOutlets: function(router, app) { 
     router.get('applicationController').connectOutlet('appTest', app); 
     }, 

     index: Ember.Route.extend({ 
     route: '/', 
     connectOutlets: function(router) { 
      appTestController = router.get('appTestController'); 
      appTestController.connectOutlet('addCommentOutlet', 'addComment', {}); 
      appTestController.connectOutlet('versions', appTestController.get('content.versions')); 
     } 
     }) 
    }) 
    }) 
}); 

I widoki i kontrolery wyglądać następująco:

App.AppTestView = Ember.View.extend({ 
    templateName: 'app_test' 
}); 

App.VersionsView = Ember.View.extend({ 
    templateName: 'versions' 
}); 

App.AppTestController = Ember.ObjectController.extend({ 
}); 

App.VersionsController = Ember.ArrayController.extend({ 
}); 

Kiedy uruchamiam go niestety pojawia się błąd : an Ember.CollectionView's content must implement Ember.Array. You passed <App.Version:ember519>.

Co ciekawe, jeśli dodaję nawiasy wokół [appTestController.get('content.versions')] w routerze, to nie narzeka i tworzy poprawnie tablicę z pierwszym obiektem wersji. Ale wydaje się, że nie chce pokazywać więcej niż jednego obiektu.

Jakieś wskazówki?

+0

Błąd jest prosty, mówi, że App.Version nie jest tablicą instanceOf. Wygląda na to, że próbujesz ustawić właściwość Object na zawartość widoku kolekcji (której kod nie widzę w pytaniu), który jest typu Ember.Array() ... Oczyść mnie Jeśli się mylę, –

+0

To jest jednak zabawne. Chcę wysłać zawartość tablicy z tablicą treści: z wyjątkiem 'appTestController.get (" content.versions ') 'zwraca jeden obiekt zamiast tablicy ?! –

+0

appTestController jest ObjectController lub ArrayController? a także w jaki sposób przesyłasz zapytanie do sklepu? –

Odpowiedz

11

W końcu to nie były modele, obiekty widoku ani kontrolery! To nie był nawet router.

To był versions.handlebars. Miałem pętli w pętli w moim szablonu, jak poniżej:

{{#each version in controller}} 
    Version here 
    {{#each comment in version}} 
    {{comment.text}} 
    {{/each}} 
{{/each}} 

bym niepoprawnie napisane:

each comment in version 

... gdzie ja oznaczało napisać:

each comment in version.comments 

:) To wyjaśnia komunikat o błędzie. Mam nadzieję, że to pomoże komuś innemu!