У меня возникла проблема с Handlebars.JS
, так как она не заменяет {{anything}}
с соответствующими переменными.Handlebars.JS не заменяет теги контекстом
У меня есть следующие вспомогательные функции:
function compileTemplate(name){
return Handlebars.compile($('#'+name+'-template').html());
}
, который я использую в следующем виде Backbone:
Soccer.Teams.Li = compileTemplate('team-li');
Soccer.Router = Backbone.Router.extend({
routes: {
"": "index"
},
index: function(){
Soccer.container.html(compileTemplate('main'));
var teams = new Soccer.Teams.View();
var container = Soccer.container.find('.sub-content');
container.html(teams.render().$el.html());
var teamsList = container.find('#teams-list');
teams.teams.forEach(function(team){
teamsList.append(Soccer.Teams.Li(team.toJSON()));
}, this);
Soccer.page.trigger('pagecreate');
}
});
И #team-li-template
является следующее:
<script id="team-li-template" type="text/x-handlebars-template">
<li team-id="{{id}}"><a>{{name}}</a></li>
</script>
Правильная информация определенно передается, если я console.log
.toJSON
он содержит правильную информацию, но ничего не заменяется, теги просто превращаются в ничего.
Любые идеи?
Спасибо!
Update:
Как ни странно, я скопировал все из моего кода в JSFiddle и он работал отлично:
Фактическое приложение 54.235.201.41 (извините, не позволил бы мне добавьте его как ссылку).
Также попытался просто сохранить код как файл локально и запустить его, что тоже отлично работает.
Имя пользователя: [email protected] и пароль для обоих. Что-то не так с реальным приложением? Почему он работает в JSFiddle/local, а не в моем приложении?
Вы пробовали не включать '.toJSON()'? или, возможно, жесткое кодирование в некоторых значениях, чтобы увидеть, работает ли он, например teamsList.append (Soccer.Teams.Li ({id: 1233, имя: "asdfasdf"})); – CheapSteaks
@CheapSteaks Попробовали оба безрезультатно ... :( – MatthewKremer
@MatthewKremer Код Handelbars сам по себе выглядит хорошо. Http://jsfiddle.net/W8Xxf/ – CheapSteaks