#javascript #spacebars
#javascript #пробелы
Вопрос:
Я не уверен, почему я получаю эту ошибку:
assignment.js:103 Uncaught TypeError: template is not a function
Код:
var current_category = animals_data.category[0];
var current_animal = current_category.animals[0];
function showTemplate(template, data){
var html = template(data);
$('#content').html(html);
}
Я использую пробелы для компиляции как таковой:
$(document).ready(function() {
//
// compile all of our templates ready for use
//
var source = $("#category-template").html();
category_template = SpacebarsCompiler.compile(source);
source = $("#animals-template").html();
animals_template = SpacebarsCompiler.compile(source);
source = $("#animal-template").html();
animal_template = SpacebarsCompiler.compile(source);
//
// clicking on the categorys tab shows the
// thumbnails of all the categorys
//
$("#category-tab").click(function () {
// displays the categorys template
showTemplate(category_template, animals_data);
// make the categorys tab the active one
// first make the currently active tab inactive
$(".nav-tabs .active").removeClass("active");
// then make categorys tab active
$("#category-tab").addClass("active");
$(".category-thumbnail").click(function (){
// get the index (position in the array)
// of the category we clicked on
// "this" is the element that was clicked on
// data("id") gets the attribute data-id
// (which we set to the index of the category in
// the array - @index)
var index = $(this).data("id");
// set the current category to this category
current_category = animals_data.category[index];
// displays the animals template
showTemplate(animals_template, current_category);
// add an on click al all the animal thumbnails
// which displays the animal in a modal popup
$(".animal-thumbnail").click(function (){
// get the index (position in the array)
// of the we clicked on
// "this" is the element that was clicked on
// data("id") gets the attribute data-id
// (which we set to the index of the animal in
// the array - @index)
var index = $(this).data("id");
// set the current animal to this animal
current_animal = current_category.animals[index];
// displays the single animal template
showTemplate(animal_template, current_animal);
});
});
});
$("#animal-tab").click(function () {
// displays the animals template
showTemplate(animals_template, current_category);
// make the animals tab the active one
// first make the currently active tab inactive
$(".nav-tabs .active").removeClass("active");
// then make animals tab active
$("#animal-tab").addClass("active");
// add an on click al all the animal thumbnails
// which displays the animal in a modal popup
$(".animal-thumbnail").click(function (){
// get the index (position in the array)
// of the animal we clicked on
// "this" is the element that was clicked on
// data("id") gets the attribute data-id
// (which we set to the index of the animal in
// the array - @index)
var index = $(this).data("id");
// set the current animal to this animal
current_animal = current_category.animals[index];
// displays the single animal template
showTemplate(animal_template, current_animal);
});
});
$("#category-tab").click();
});
Комментарии:
1. В вашей функции вызывается аргумент
showTemplate
.template
Когда вы используете эту функцию, передаете ли вы функцию в качестве первого аргумента?2. привет, Мишель, да, это так, и, как ни странно, до того, как handlebars устарел, он работал нормально, теперь это проблема, поскольку я перешел на spacebars.