2012-11-03 8 views
6

domanda Ember abbastanza facile, qui, (spero!).Ember Router registra errore: "il contenuto di Ember.CollectionView deve implementare Ember.Array"

Ho una semplice configurazione di dati di brace. Un'unica app ha molte versioni. Ecco il mio modello di App:

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

Il mio router è abbastanza semplice:

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

E i punti di vista e controller simile a questa:

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

Quando eseguo purtroppo ottengo l'errore : an Ember.CollectionView's content must implement Ember.Array. You passed <App.Version:ember519>.

È interessante notare che se aggiungo parentesi intorno a [appTestController.get('content.versions')] nel router non si lamenta e crea una matrice con il primo oggetto Versione correttamente. Ma non sembra voler mostrare più di un oggetto.

Qualche consiglio?

+0

L'errore è dritto in avanti, si dice che App.Version non è una matrice instanceof, Sembra che si sta tentando di impostare un oggetto di proprietà contenuto Collezione Vista (il cui codice non riesco a vedere in questione), che è di tipo Ember.Array() ... Cancella me Se ho torto –

+0

Questa è la cosa divertente però. Voglio inviare l'array di contenuti con una serie di contenuti: ad eccezione di 'appTestController.get ('content.versions')' restituisce un singolo oggetto invece di un array ?! –

+0

appTestController è ObjectController o ArrayController? e anche come stai interrogando il negozio? –

risposta

11

Alla fine, non erano i modelli, gli oggetti vista o i controller! Non era nemmeno il router.

Era versions.handlebars. Ho avuto un ciclo all'interno di un ciclo nel mio modello, come di seguito:

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

avevo erroneamente scritto:

each comment in version 

... dove avevo intenzione di scrivere:

each comment in version.comments 

:) Questo spiega il messaggio di errore. Spero che questo aiuti qualcun altro!

Problemi correlati