Я только начал использовать литералы шаблонов и помеченные литералы шаблонов.Но я сталкиваюсь с проблемой при попытке визуализации литерала шаблона, потому что он выполняет дополнительную подстановку, и я не могу понять, откуда он берется.
Вот что я пробовал:
Мои данные
var data = {
login: "john_12",
name: "John",
bio: "developer",
email: "jdev@mail.com"
}
Функция моего тега
function replaceNullData(strings, ...parts) {
var checkedMarkup = "";
strings.forEach((string, index) => {
if (!parts[index]){
parts[index] = "data no available";
}
checkedMarkup += string + parts[index];
});
return checkedMarkup;
}
Литерал моего шаблона
var summaryMarkup = replaceNullData`
<div>
<p>Username: ${data.login}</p>
</div>
<div>
<p>Name: ${data.name}</p>
</div>
<div>
<p>Bio: ${data.bio}/<p>
</div>
<div>
<p>Email: ${data.email}</p>
</div>
`;
Теперь, если я сделаю console.log(summaryMarkup);
, я получу это:
<div>
<p>Username: john_12</p>
</div>
<div>
<p>Name: John</p>
</div>
<div>
<p>Bio: developer/<p>
</div>
<div>
<p>Email: jdev@mail.com</p>
</div>
data no available <------- THIS IS WHAT SHOULDN'T APPEAR
В конце есть дополнительные «данные недоступны».Это как функция тега, полученная 6 parts
(подстановка или выражение) вместо 5.
Что мне здесь не хватает?