2016-12-02 2 views
0

Я использую spacebars для создания формы в стиле викторины. Следующий код корректно отображает подробную информацию о 3-й пункт в викторине массивевыбор данных массива случайным образом с помощью spacebars

{{#with quiz.[2]}} 
    <form class="testForm"> 
     <br> 
     {{question}}<br> 
     {{#each answer}} 
     <input type="radio" name="multipleChoice" value={{this}}>{{this}}<br> 
     {{/each}} 
     <br> 
     <input type="submit" value="Submit"> 
     <br><br><br> 
    </form> 
{{/with}} 

и следующая вспомогательная функция корректно генерирует случайное число из числа элементов в массиве викторины

Template.templateName.helpers({ 
    randomNumber() { 
    return _.random(0, (this.quiz.length - 1)); 
    } 
}); 

что теперь Я пытаюсь сделать так, чтобы получить

{{#with quiz.[2]}} 

использовать этот генератор случайных чисел для случайного отображения викторины. Логически я хочу сделать что-то вроде

{{#with quiz.[randomNumber]}} 

, но это не работает, очевидно

ответ

1

Просто настроить ваш помощник немного вернуть случайный элемент массива quiz вместо самого случайного числа:

Template.templateName.helpers({ 
    randomElement(array) { 
    return array && array[_.random(0, (array.length - 1))]; 
    } 
}); 

Тогда просто относятся к нему как: {{#with randomElement quiz}}

+0

большое спасибо! это дает мне правильный результат! Я получаю от него консольную ошибку: «Исключение в помощнике шаблона: TypeError: Не удается прочитать свойство« длина неопределенного »- все равно? –

+0

См. Обновленный код, защищающий отсутствующий массив, что может случиться, когда подписка еще не готова. –

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