2016-08-15 4 views
0

Я пытаюсь использовать Jade для простого веб-приложения для шаблонов html. У меня есть JSON, который выглядит как:Проверить наличие JSON Jade Templating

{ 
    "responses": [ 
     { 
      "fieldOne": 1, 
      "fieldTwo": 2, 
      "fieldThree": "Some string" 
     }, 
     { 
      "fieldOne": 10, 
      "field2": 20, 
      "fieldFour": "Some other string" 
     } 
    ] 
} 

Я пытаюсь петлю над этим списком ответов в Джейд, и создать строку в таблице для каждого ответа. Цикл, кажется, работает нормально, проблема в том, что в некоторых ответах отсутствуют поля, и я хотел бы поместить пробел в эту ячейку, если поле отсутствует. Я передаю Jade карту (из Spark) только с одной записью «responseData», которая сопоставляется всему объекту JSON.

body 
    div 
     table 
      thead 
       tr 
        th Field One 
        th Field Two 
        th Field Three 
        th Field Four 
      tbody 
       each val in responseData.responses 
        tr 
         td 
          #{val.fieldOne} 
         td 
          #{val.fieldTwo} 
         td 
          #{val.fieldThree} 
         td 
          #{val.fieldFour} 

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

td 
    if val.fieldFour 
     #{val.fieldFour} 

Это возвращает «недостижимое или неизвестное свойство fieldFour», если fieldFour не существует. Я хотел бы знать, как проверить, имеет ли val определенное свойство. Я пробовал следующие руководства Jade, пытаясь что-то делать, например, с locals, используя нотацию в виде скобок и т. Д., Но безрезультатно. Я не нашел примера, где это делается внутри цикла, так что это может быть проблемой.

Я рассмотрел все другие вопросы переполнения стека, которые я могу, поэтому любая помощь оценивается! Благодаря!

ответ

0

Мне удалось получить эту работу путем замены хэшей # на восклицательный знак !.

Разница между двумя является экранированной и ! является необработанными данными. Вы можете увидеть рабочие примеры разницы здесь - http://naltatis.github.io/jade-syntax-docs/#escaping

Джейд:

- responseData = { "responses": [{"fieldOne": 1,"fieldTwo": 2,"fieldThree": "Some string"},{"fieldOne": 10,"field2": 20,"fieldFour": "Some other string"}]} 

table 
    thead 
    tr 
     th Field One 
     th Field Two 
     th Field Three 
     th Field Four 
    tbody 
    each val in responseData.responses 
     tr 
     td 
      if val.fieldOne 
      !{val.fieldOne} 
     td 
      if val.fieldTwo 
      !{val.fieldTwo} 
     td 
      if val.fieldThree 
      !{val.fieldThree} 
     td 
      if val.fieldFour 
      !{val.fieldFour} 

Я получил рабочую версию здесь - http://codepen.io/AdamCCFC/pen/akrjVv

Смежные вопросы