#javascript #jquery #jquery-templates
#javascript #jquery #jquery-шаблоны
Вопрос:
У меня есть: jquery1.6.min, jquery-tmpl.js (последняя бета-версия) и knockout-1.2.0.js . Я использую очень простой пример, но я не могу заставить шаблоны jquery отображаться, я не могу понять почему, проще говоря, я могу видеть элементы в dom, сканируя dom с помощью firebug — у меня появляется какой-то tmp = annonymous (jquery, $ item), но данные не отображаются внутри dom.
шаблон:
<script id="bookTemplate" type="text/x-jquery-tmpl">
<h2>${title}</h2>
price: ${formatPrice(price)}
</script>
jscode:
<script type="text/javascript">
$(document).ready(function() {
// Create an array of books
var books = [
{ title: "ASP.NET 4 Unleashed", price: 37.79 },
{ title: "ASP.NET MVC Unleashed", price: 44.99 },
{ title: "ASP.NET Kick Start", price: 4.00 },
{ title: "ASP.NET MVC Unleashed iPhone", price: 44.99}];
function formatPrice(price) {
return "$" price.toFixed(2);
}
// Render the books using the template
$('#bookTemplate').tmpl(books).appendTo('#bookContainer');
});
</script>
Ответ №1:
window.formatPrice = function formatPrice(price) {
return "$" price.toFixed(2);
}
Ваш вызов formatPrice
в вашем шаблоне, но определение функции в вашем закрытии. Чтобы иметь возможность делать это formatPrice
, он должен находиться в глобальной области видимости. Простой способ сделать это — назначить функцию windiw.formatPrice
Комментарии:
1. Я чувствую себя полным идиотом… то, что вы мне показали, помогло мне, но я пропустил добавление фактического контейнера, к которому я добавлял: ‘<идентификатор div=»bookContainer»></div>’
2. @Харун О. Я предполагал, что у вас это было в вашем HTML : D Если это решило вашу проблему, примите это 🙂
3. По какой-то причине мне пришлось подождать 4 минуты, сойдет. Спасибо 🙂