2012-11-03 8 views
6

Ziemlich geradlinig Ember Frage hier, (ich hoffe!).Ember Router protokolliert Fehler: "Ember.CollectionView Inhalt muss Ember.Array implementieren"

Ich habe eine einfache Ember-Daten-Setup. Eine App hat viele Versionen. Hier ist meine App-Modell:

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

Mein Router ist ziemlich einfach:

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')); 
     } 
     }) 
    }) 
    }) 
}); 

Und die Ansichten und Controller wie folgt aussehen:

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({ 
}); 

Wenn ich es laufen leider bekomme ich die Fehler : an Ember.CollectionView's content must implement Ember.Array. You passed <App.Version:ember519>.

Interessanterweise, wenn ich Klammern um [appTestController.get('content.versions')] im Router hinzufügen, beschweren sie sich nicht und erstellt ein Array mit dem ersten Version-Objekt korrekt. Aber es scheint nicht mehr als ein Objekt zeigen zu wollen.

Irgendwelche Tipps?

+0

Der Fehler ist einfach, es besagt, dass App.Version kein instanceOf-Array ist. Es sieht so aus, als ob Sie versuchen, ein Objekt auf content -Eigenschaft der Collection-Ansicht zu setzen (dessen Code ich in der Frage nicht sehen kann). was ist vom Typ Ember.Array() ... Löschen Sie mich Wenn ich falsch liege –

+0

Das ist die lustige Sache, obwohl. Ich möchte das Inhalts-Array mit einem Array von Inhalten gesendet werden: außer 'appTestController.get ('content.versions')' gibt ein einzelnes Objekt anstelle eines Arrays zurück ?! –

+0

appTestController ist ObjectController oder ArrayController? Und wie fragen Sie den Laden? –

Antwort

11

Am Ende waren es nicht die Modelle, Ansichtsobjekte oder Controller! Es war nicht einmal der Router.

Es war . Ich hatte eine Schleife innerhalb einer Schleife in meiner Vorlage, wie unten:

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

ich falsch geschrieben hatte:

each comment in version 

... wo ich schreiben gemeint hatte:

each comment in version.comments 

:) Das erklärt die Fehlermeldung. Hoffe das hilft jemand anderem!

Verwandte Themen