4

J'utilise backbone.js avec des modèles imbriqués. L'idée étant auto-contenir tous les attributs de l'auteur ainsi que de réutiliser le modèle auteur sur les deux postes et commentaires. Au moins en théorie, cela me semble logique. Cependant, en configurant les choses comme ça, j'ai été confronté à une confusion sur la façon de récupérer les différentes valeurs avec Handlebars. Handlebars n'aime pas être passé des objets de ce que j'ai lu. Je peux facilement récupérer le statut dans un {{#each}} avec {{status}} mais naturellement faire {{author.name}} ne fonctionnera pas. J'ai regardé à l'aide d'un assistant, mais comme vous pouvez le voir, j'ai des commentaires imbriqués à l'intérieur, qui aura un autre auteur imbriqué à l'intérieur. Je ne crois pas que les aides à l'intérieur des aides travailleront.Handlebars imbriqués objets

Ceci est un exemple d'objet extrait de la console de Chrome.

Object {items: Array[2]} 
    +items: Array[2] 
     +0: Object 
      +author: child 
       _changing: false 
       _pending: false 
       _previousAttributes: Object 
       +attributes: Object 
        name: "Amy Pond" 
        profileImage: "Amy.jpg" 
        __proto__: Object 
       changed: Object 
       cid: "c0" 
       __proto__: Surrogate 
      comments: child 
      id: "50f5f5d4014e045f000001" 
      status: "1- This is a sample message." 
      __proto__: Object 
     +1: Object 
      author: child 
      comments: child 
      id: "50f5f5d4014e045f000002" 
      status: "2- This is another sample message." 
      __proto__: Object 
      length: 2 
      __proto__: Array[0] 
      __proto__: Object 

Suis-je tort de mon organisation, ou est-il une meilleure façon de gérer les données multidimensionnelles? Ou y a-t-il un bon moyen pour que Handlebars atteigne chacune des valeurs?

S'il existe un moteur de template plus puissant, je suis ouvert.

Répondre

5

Semble le problème est que vous mettez le modèle Backbone directement dans votre modèle, mais vous devez d'abord le convertir en un objet JSON en utilisant model.toJSON(). Ou vous essayez d'accéder author.attributes.name.

De l'docs:

Guidons prend également en charge les chemins imbriqués, permettant de rechercher des propriétés imbriquées en dessous du contexte actuel.

<div class="entry"> 
    <h1>{{title}}</h1> 
    <h2>By {{author.name}}</h2> 

    <div class="body"> 
    {{body}} 
    </div> 
</div> 

Ce modèle fonctionne avec ce contexte

var context = { 
    title: "My First Blog Post!", 
    author: { 
    id: 47, 
    name: "Yehuda Katz" 
    }, 
    body: "My first post. Wheeeee!" 
};