Невозможно установить имя класса в шаблоне Jasonette - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть "приложение" Jasonette, которое получает простой набор данных с сервера и отображает его в списке. Данные представляют собой набор имен людей, каждое со словом «ДА», «НЕТ», «МОЖЕТ БЫТЬ» или null:

{
    "date":"2018-11-07",
    "dateFormatted":"Wednesday, November 7th",
    "responses":[
        {"name":"Jonathan","response":"NO"},
        {"name":"Mark","response":"YES"},
        {"name":"Stuart","response":"YES"},
        {"name":"Jack","response":"MAYBE"},
        {"name":"David","response":null}
    ]
}

Вот код приложения, скопированный из одного из примеров приложений:

{
  "@": "http://web.jasonette.com/items/926",
  "title": "OSTT Mincha",
  "collection": {
    "@": "responses@https://example.com/status.json"
  },
  "adapter": {
    "title": "{{name}}",
    "description": "{{response}}"
  },
  "style": {
    "background": "#ffffff",
    "header": {
      "background": "#ffffff",
      "color": "#2a2a2a"
    },
    "item": {
      "title": "#bc9458",
      "description": "#001000"
    }
  }
}

Теперь я хочу раскрасить строки ответов, чтобы «ДА» имел зеленый фон, «НЕТ» - красный, а «МОЖЕТ» - желтый.

Я попытался изменить образец "Basic ListView Mixin", чтобы добавить классы, которые добавили бы эти фоны, например:

{
  "$jason": {
    "head": {
      "title": "Basic ListView Mixin",
      "type": "mixin",
      "data": {
        "collection": {
          "@": "$document.collection"
        },
        "style": {
          "@": "$document.style"
        },
        "styles": {
          "YES": {
            "background": "#dff0d8"
          },
          "NO": {
            "background": "#f2dede"
          },
          "MAYBE": {
            "background": "#fcf8e3"
          }
        }
      },
      "templates": {
        "body": {
          "header": {
            "title": {
              "@": "$document.title"
            },
            "style": {
              "background": "{{style.header.background}}",
              "color": "{{style.header.color}}"
            }
          },
          "background": "{{style.background}}",
          "sections": [
            {
              "items": {
                "{{#each collection}}": {
                  "type": "horizontal",
                  "style": {
                    "padding": "10",
                    "spacing": "10"
                  },
                  "components": [
                    {
                      "type": "vertical",
                      "components": [
                        {
                          "type": "label",
                          "style": {
                            "font": "HelveticaNeue-Bold",
                            "size": "12",
                            "color": "{{$root.style.item.title}}"
                          },
                          "class": "{{$document.adapter.description}}",
                          "text": {
                            "@": "$document.adapter.title"
                          }
                        },
                        {
                          "type": "label",
                          "text": {
                            "@": "$document.adapter.description"
                          },
                          "style": {
                            "font": "Helvetica",
                            "size": "11",
                            "color": "{{$root.style.item.description}}"
                          },
                          "class": "{{$document.adapter.description}}"
                        }
                      ]
                    }
                  ]
                }
              }
            }
          ]
        }
      }
    }
  }
}

Проблема в том, что в выводе я не вижу примененных классов. Вместо этого class значение равно {{$document.adapter.description}} - необработанное значение шаблона.

Согласно моим прочтениям документации, здесь должны быть разрешены значения шаблонов. Почему значение этого шаблона не заменяется?

...