我遇到了很大的问题,Handlebars.JS
因为它没有用{{anything}}
相应的变量代替。
我有以下辅助功能:
function compileTemplate(name){
return Handlebars.compile($('#'+name+'-template').html());
}
我在以下主干视图中使用它:
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
包含正确的信息,但没有被替换,标签就变成了空。
有任何想法吗?
谢谢!
更新:
奇怪的是,我将所有代码都复制到了 JSFiddle 中,它运行良好:
实际的应用程序是 54.235.201.41(抱歉,我不会将其添加为链接)。
还尝试将代码保存为本地文件并运行它,这也很好。
用户名:mkremer90@gmail.com 和两者的密码测试。看到实际应用程序有什么问题吗?为什么它可以在 JSFiddle/local 而不是我的应用程序中工作?