4

Я использую backbone.js с вложенными моделями. Идея заключается в том, что она содержит все атрибуты автора, а также для повторного использования модели автора на обеих постах и ​​комментариях. По крайней мере теоретически это имеет смысл, я бы подумал.Ручные вложенные объекты

Однако, настраивая вещи таким образом, я столкнулся с путаницей, как извлекать различные значения с помощью Handlebars. Ручкам не нравится передавать объекты из того, что я читал. Я могу легко получить статус в {{#each}} с {{status}}, но, естественно, {{author.name}} не будет работать.

Я посмотрел на использование Помощника, однако, как вы можете видеть, у меня есть комментарии, вложенные внутрь, у которых будет другой автор, вложенный внутри. Я не верю, что помощники внутри помощников будут работать.

Это образец объекта, вытащенный из консоли 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 

Am I неправильно в моей организации, или есть лучший способ справиться с многомерными данными? Или есть хороший способ для Handlebars добраться до каждого из значений?

Если есть более мощный механизм шаблонов, я открыт.

ответ

5

Кажется, проблема заключается в том, что вы помещаете модель Backbone прямо в свой шаблон, но сначала вы должны преобразовать ее в объект JSON, используя model.toJSON(). Или вы пытаетесь получить доступ к author.attributes.name.

От docs:

Рули также поддерживает вложенные пути, что делает возможным искать свойства вложенности ниже текущего контекста.

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

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

Этот шаблон работает с этим контекстом

var context = { 
    title: "My First Blog Post!", 
    author: { 
    id: 47, 
    name: "Yehuda Katz" 
    }, 
    body: "My first post. Wheeeee!" 
}; 
Смежные вопросы