Сложность использования контекстных параметров для l oop в JSRender - PullRequest
0 голосов
/ 27 мая 2020

Я использую JSRender 1.0.5, и документы на этой странице: https://www.jsviews.com/#contextualparams предполагают, что я могу сделать это: «Контекстный параметр определяется простой записью ~ myValue = ... ( для любого выражения) в любом теге блока, таком как {{if}} или {{for}}. "

Но когда я использую его для l oop, я не могу заставить его работать. Я потратил на это часы - очень расстраивает.

{{for data.collection ~collectionIdx=#getIndex()}}
    <div id="someDiv">Index = {{:~collectionIdx}}</div>
{{/for}}

Что я действительно хочу сделать, так это передать индекс внешнего l oop во внутренний l oop, но я не могу даже заставить работать базовую c функциональность. Если я выплюну {{:#getIndex()}} внутри l oop, он работает нормально - я просто не могу назначить его контекстному параметру.

Что за исправление?

1 Ответ

0 голосов
/ 27 мая 2020

#index или #getIndex() возвращают индекс 'представления элемента' - когда ваш контекст находится внутри {{for someArray}}, который проходит по массиву.

Но если вы не в пределах al oop (над массивом), #index is undefined, поэтому отображается как пустая строка ...

В вашем примере ваш контекстный параметр ~collectionIdx=#getIndex() находится во внешнем контексте, поэтому в нем хранится значение undefined.

Но если у вас есть вложенные циклы, тогда он будет правильно отображать значения индекса на соответствующем уровне:

{{for outerArray}}
    {{for innerArray ~collectionIdx=#getIndex()}}
        <div>Outer Index = {{:~collectionIdx}}</div>
        <div>Inner Index = {{:#getIndex()}}</div>
    {{/for}}
{{/for}}
...