2013-06-18 5 views
0

У меня возникла проблема с 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 и он работал отлично:

http://jsfiddle.net/vcrhh/1/

Фактическое приложение 54.235.201.41 (извините, не позволил бы мне добавьте его как ссылку).

Также попытался просто сохранить код как файл локально и запустить его, что тоже отлично работает.

Имя пользователя: [email protected] и пароль для обоих. Что-то не так с реальным приложением? Почему он работает в JSFiddle/local, а не в моем приложении?

+1

Вы пробовали не включать '.toJSON()'? или, возможно, жесткое кодирование в некоторых значениях, чтобы увидеть, работает ли он, например teamsList.append (Soccer.Teams.Li ({id: 1233, имя: "asdfasdf"})); – CheapSteaks

+0

@CheapSteaks Попробовали оба безрезультатно ... :( – MatthewKremer

+0

@MatthewKremer Код Handelbars сам по себе выглядит хорошо. Http://jsfiddle.net/W8Xxf/ – CheapSteaks

ответ

1

Ручки и магистрали выглядят отлично, и скрипка работает, поэтому проблема связана с вашей тестовой средой. Когда я смотрю на исходный код страницы на сервере, я вижу это:

<script id="team-li-template" type="text/x-handlebars-template"> 
    <li team-id=""><a></a></li> 
</script> 

Обратите внимание на бросающееся в глаза отсутствие скобок. Я бы предположил, что что-то серверная сторона ест ваши фигурные скобки. Вы говорите, что используете Django, поэтому шаблоны Django, вероятно, вызывают проблемы.

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