Как использовать json в рулях с nodeJs expressJs

У меня есть данные JSON в переменной dataList, и я хочу добавить их в помощник пользовательских ручек в качестве параметра.

var dataList = [
  {
    "id": 1,
    "title": "Arrange meeting",
    "date": "Today 10:35 | By Admin",
    "completed": true
  },
];

Руль Пользовательский помощник

var Handlebar = require('handlebars');
Handlebar.registerHelper('List', function(data, options){
  //console.info(data) //returns undefined 
  return options.fn(JSON.parse(data)); // gives error
});

Пользовательский рендеринг помощника:

{{#List dataList}} 
  {{> widgets/toDoList}}
{{/List}}

Это вызывает ошибку

SyntaxError: Unexpected token u in JSON at position 0

Принимая во внимание, что он работает со статическими данными

{{#List '[
  {
    "id": 1,
    "title": "Arrange meeting",
    "date": "Today 10:35 | By Admin",
    "completed": true
  },
]' }} 
  {{> widgets/toDoList}}
{{/List}}
When I have add full json code in {{#List full_json_code_here}} with single quotes then works perfectly не могли бы вы объяснить это? или лучше добавить вариант использования в вопрос, когда он работает
Raghav Garg 19.09.2018 13:49

@RaghavGarg Qus. обновлено.

Varinder Sohal 19.09.2018 13:54

Спасибо за обновление, я почти уверен, что проблема не в пользовательском помощнике, а в том, как вы передаете ему данные. Пожалуйста, также покажите, откуда вы вызываете этот вид !! Если вы используете экспресс, это будет похоже на res.render('view-name', data).

Raghav Garg 19.09.2018 13:55

Спасибо!! @RaghavGarg работает

Varinder Sohal 20.09.2018 07:49
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
4
939
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

это потому что ваш data возвращает undefined подробнее см. здесь [uncaught syntaxerror неожиданный токен U JSON]

JSON dataList уже определен, но проблема все еще не решена.

Varinder Sohal 17.09.2018 14:04
Handlebar.registerHelper('List', function(data, options){ //console.info(data) //returns undefined return options.fn(JSON.parse(data)); }); в этом коде вы выполнили синтаксический анализ в json, но из-за неопределенных данных вы получили эту ошибку.
Jignesh Sanghani 17.09.2018 14:07

Хорошо!! Не могли бы вы объяснить мне, как определять dataList ?? в {{#List dataList}} {{> widgets / toDoList}} {{/ List}}

Varinder Sohal 17.09.2018 14:24

Вы когда-нибудь играли с рулем ???? вот руководство для этого (видео) [youtube.com/watch?v=4HuAnM6b2d8]

Jignesh Sanghani 17.09.2018 14:30

@JigneshSanghani, почему вы задали вопрос как ответ, который только что перефразировали? OP сказал нам, что это данные undefined и, следовательно, ошибка. Пожалуйста, помогите определить, почему идет undefined .. !!

Raghav Garg 19.09.2018 13:58

JSON.parse принимает строку, но вы передаете ему массив

Ответ принят как подходящий

Я почти уверен, что проблема не в пользовательском помощнике, а в том, как вы передаете ему данные.

Если вы используете экспресс, это будет похоже на res.render('view-name', data)

Другие вопросы по теме