2013-11-17 5 views
0

Таким образом, это код:шаблон() в Handlebar.js не принимает параметр

$('li.list').on('click', function(){ 
    console.log(this.id); 
    var temp = template(library) ; 
    console.log(temp); 
    $('.infotemplate').append(temp); 
}); 

Когда я вошел this.id, это дает мне правильный идентификатор т.е. библиотеки. но когда я передаю это в функцию template(), он не анализирует детали моей библиотеки объектов. Но когда я явно передаю библиотеку в качестве параметра функции function(), она дает правильный вывод. Итак, я хочу, чтобы это динамически, когда пользователь нажимает на этот идентификатор, объект с тем же именем, что и идентификатор, добавляется позже в тело.

$('li.list').on('click', function(){ 
    console.log(this.id); 
    var temp = template(this.id) ; 
    console.log(temp); 
    $('.infotemplate').append(temp); 
}); 

Как это решить? Пожалуйста, помогите ..

+0

вы можете показать, как сделать вы устанавливаете библиотечную переменную в код выше? и если добавить HTML, который будет полезным – Surender

+0

библиотека является объектом JavaScript: вара библиотеки = { \t \t значка: «библиотека», \t \t названия: «Чем учиться», \t \t убывания: ' Lorem ipsum dolor '} и его идентификатор элемента, который при щелчке должен загрузить этот объект в шаблон. – Gaurav

+0

О, я уже объявил var template = Handlebars.compile ($ ('# template'). Html()); Где #template ссылается на код шаблона руля. – Gaurav

ответ

0

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

Что вы сейчас делаете, передавая строку библиотека и не переменная с таким именем ..

var items = { 
    library : {icon:'..', title:'...',..}, 
    cityhall: {..}, 
    ... 
} 

и использовать

$('li.list').on('click', function(){ 
    console.log(this.id); 
    var temp = template(items[this.id]) ; 
    console.log(temp); 
    $('.infotemplate').append(temp); 
}); 
+0

Спасибо! Я просто использовал eval(), чтобы преобразовать его в объект, и поэтому он сработал! : D 3 часа только что ударил головой. – Gaurav

+0

@Gaurav [не eval] (http://24ways.org/2005/dont-be-eval/) :) –

+0

Ну, тогда как мне преобразовать эту строку в объект без создания главного главного объекта? – Gaurav

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