По модулю не работает над жидкими шаблонами в приложении логики, но работает локально - PullRequest
0 голосов
/ 10 апреля 2019

Следующий шаблон с любым массивом в качестве содержимого:

{%- for datapoint in content -%}
{%- assign breaker = (forloop.index | modulo: 4) -%}
{{breaker}}
{% if breaker == 0 %};
{% endif %}
{%- endfor -%}

Создает этот вывод в коде Visual Studio и соответствует документации:

1 2 3 0 1 2 3 0 1 2 3 0

(я добавил пробел вместо новой строки для читабельности)

Запуск того же шаблона в приложении логики Azure приведет к получению

1 2 3 4 5 6 7 8 9 10 11 12

Существуют ли другие способы достижения того же результата с использованием шаблонов Liquid без модуля? Похоже на | может быть проблемой,

{%- assign arraysize = content | size -%}

тоже вроде не работает, но

{%- assign arraysize = content.size -%}

работает отлично. Однако я не уверен, как использовать по модулю таким образом.

1 Ответ

1 голос
/ 30 апреля 2019

Я считаю, modulo должно быть Modulo (заглавная 'M')

Для жидких шаблонов приложения логики используют библиотеку DotLiquid , сконфигурированную в соответствии с соглашением об именах C # (см. this ), требующую использования заглавных букв имен фильтров.

Это также упоминается в примечании к документации по приложениям логики для Преобразование JSON .

По сути, фильтры должны быть такими же, как у оригинальных рубиновых

  • at_least становится AtLeast
  • plus становится Plus

ОБНОВЛЕНИЕ: Не уверен, что круглые скобки действительны в жидкости, но мне пришлось удалить их для приложений логики

{%- for datapoint in content -%}
{%- assign breaker = forloop.index | Modulo: 4 -%}
{{ breaker }}
{%- endfor -%}
...