Ошибка, показав данные в handlebars-js

Я стараюсь соглашаться на id этого элемента, посланного из-за json в handlebars.js

{
    "status":"success",
    "message": {
        "message":"sdasdasasd",
        "type":"photo",
        "post_id":55,
        "title":"",
        "description":"",
        "url":"",
        "image":"",
        "code":"",
        "provider":"",
        "photo": {
           "http:\/\/timeline.dev\/storage\/app\/public\/vdjkelly\/timeline_SzfkoDzMWc.jpg":"http:\/\/timeline.dev\/storage\/app\/public\/vdjkelly\/timeline_SzfkoDzMWc.jpg",
           "http:\/\/timeline.dev\/storage\/app\/public\/vdjkelly\/timeline_qm7sq7RY1K.jpg":"http:\/\/timeline.dev\/storage\/app\/public\/vdjkelly\/timeline_qm7sq7RY1K.jpg"
        }
    }
}

Код, который у меня есть так

@{{#each photo}}

  <li class="grid">
    <div class="posted-photo">
      <div class="photo">
        <div class="fphoto-item">
          <a class="ShowStatus" data-id="@{{post_id}}" href="#" data-lightbox="lightbox@{{post_id}}">
            <img src="@{{this}}" class="imgpreview" id="@{{post_id}}" rel="@{{post_id}}">
          </a>
        </div>
      </div>
  </li>
@{{/each}}

и все же он я не соглашается в post_id

Код моего js - следующий:

var template = render_template('#send-photo', {
    'message': response.message.message, 
    'type': response.message.type, 
    'photo': response.message.photo, 
    'post_id': response.message.post_id
});
3
задан 15.03.2016, 23:26
1 ответ

Вызови: различные контексты

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

Концепция контекста в Handlebars/Mustache была бы объектом, свойства которого ты можешь соглашаться используя ключи {{ }} в данном моменте. Верхний уровень контекста - объект, который ты переместил как второй параметр в render_template, но helpers как #each они это изменяют.

Сделав @{{#each photo}} ты меняешь контекст оригинала в исключительно объект photo где уже нет так называемого свойства post_id из-за которого {{post_id}} она является пустотой.

Для большей информации о контекстах и paths в документации Handlebars (на английском).

Решение: менять маршрут с ../

На твой случай ты изменил контекст в photo, а следовательно ты только хочешь подняться в контекст отца. Для этого ты можешь использовать ../ чтобы менять ruta/path свойства в свойство отца. В твоем случае, что ты был бы должен менять, {{post_id}} из-за {{../post_id}} и это решит проблему.

Замечание: ../ смоги сочетаться, чтобы продолжать пересекать контексты. ../ он согласится на отца, но ты можешь "пересылать" больше контекстов: ../../ он позволит соглашаться на свойство в отце отца, ../../../ для контекста отца отца отца, и я схватил последовательно.

Линии, которые нуждались бы в изменениях в твоем коде:

<a class="ShowStatus" data-id="@{{../post_id}}" href="#" data-lightbox="lightbox@{{../post_id}}">
    <img src="@{{this}}" class="imgpreview" id="@{{../post_id}}" rel="@{{../post_id}}">
</a>
3
ответ дан 24.11.2019, 14:43
  • 1
    Спасибо за soluci и # 243; n. мне служит многим твой explicaci и # 243; n будь ясной и понятная за него ей благодарен. – vdjkelly 16.03.2016, 16:39