2017-08-10 4 views
0

Je ne peux pas afficher ma collection. J'ai un contrôleur de repos dans mon back-end «/voitures » et ce JS Code à la pageCollection ne pas afficher sur la page

var Cars = Backbone.Collection.extend({ 
    url: '/cars' 
}); 
var myChildV = Marionette.View.extend({ 
    template: '#myV', 
}); 
var myCollectionV = Marionette.CollectionView.extend({ 
    collection: new Cars(), 
    childView: myChildV, 
}); 
var collectionV = new myCollectionV(); 
collectionV.render(); 

mais il affiche rien à la page. Le modèle est placé avant js est exécuté et ressemble

<script id="myV" type="x-template/underscore"> 
    <h1><% items.name %></h1> 
    <h2><% items.price %></h2> 
</script> 

J'ai essayé de lire quelques guides, débutant livre d'introduction, mais tous en donnant des exemples sans contrôleurs REST. Que faire pour afficher une collection de modèles?

+0

Oui, vous pouvez le voir dans l'attribut d'URL url: '/ cars'. Ou voulez-vous dire que je devrais d'abord appeler la méthode .fetch() avec js sur la page, et après que ces éléments s'affichent? –

Répondre

1

La documentation dit:

La CollectionView en boucle par tous les modèles de la collection spécifiée, rendent chacun d'entre eux à l'aide d'un ChildView spécifié, puis ajouter les résultats de l'el vue enfant à la vue collection de el.

il y a quelques problèmes dans votre code:

  1. Il est clair que votre collection est vide. Il n'y a donc pas de modèle à rendre. Vous n'êtes pas en train d'ajouter des modèles côté client, ni de les récupérer du côté serveur

  2. Votre vue est en mémoire, elle n'est en aucun cas connectée au DOM réel, si vous voulez le voir dans votre page Web, vous devez ajouter au DOM.

0

Votre collectionView ne sait pas où le contenu rendu doit être ajouté. Essayez d'y ajouter un attribut "el: 'body" ".