标签:javascript handlebars-js backbone-js
我正在使用PHP-backend,Backbone.js和Handlebars.js.我的javascript请求数据,并且JSON数据成功返回(json_encode).
当我将此JSON数据提供给车把模板时,它不会显示.我意识到我的JSON对象的前面和后面的方括号被Handlebars.js“不喜欢”而没有被显示.看看下面的代码.
var ArticleListView = Backbone.View.extend(
{
el: $('#main'),
render: function()
{
var template = Handlebars.compile($("#articles_hb").html());
$(this.el).html(template([{"articles":[{"title" : "1"}, {"title" : "2"}]}]));
return this;
}
});
现在,如果我取出括号,它可以正常工作.这是怎么回事?为什么方括号出现在那里?我怎么摆脱他们?
解决方法:
Handlebars想要一个上下文对象,因为它使用上下文作为模板值的简单查找表.所以你需要将一个对象({…})传递给template(),而不是一个数组([…]).
有人会给你一个包含你需要的上下文对象的单元素数组.要么修复生成JSON的PHP以发送JSONified对象(PHP术语中的关联数组)而不使用数组包装器,要么在客户端代码中删除数组,如下所示:
$(this.el).html(template(context[0]));
如果你有这个文字代码:
$(this.el).html(template([{"articles":[{"title" : "1"}, {"title" : "2"}]}]));
在您的JavaScript文件中,您必须生成该代码并修复它.如果您确实拥有嵌入在Backbone视图中的文字数据,那么您可能没有正确使用Backbone,模板的数据应该来自Backbone模型.
如果你从Backbone模型中获取JSON,那么我猜你在一个集合(返回一个数组)上调用toJSON
而不是单个模型,其中toJSON
应该给你一个JavaScript对象.
标签:javascript,handlebars-js,backbone-js
来源: https://codeday.me/bug/20191007/1864369.html
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。