Javascript 对象未向下传递到主干中的模板
我正在尝试进行一个JSON调用,并用主干列出其中的项目。我成功地获取了这些项目,并且能够通过控制台日志确认它们是否可用,但是当我尝试将它们传递到模板中时,我得到一个错误消息Javascript 对象未向下传递到主干中的模板,javascript,backbone.js,underscore.js,backbone-views,Javascript,Backbone.js,Underscore.js,Backbone Views,我正在尝试进行一个JSON调用,并用主干列出其中的项目。我成功地获取了这些项目,并且能够通过控制台日志确认它们是否可用,但是当我尝试将它们传递到模板中时,我得到一个错误消息 "Uncaught ReferenceError: quotes is not defined" 我的代码: var Quotes=Backbone.Collection.extend({ url:“/quotes.json” }); var UserListView=Backbone.View.extend({ el:
"Uncaught ReferenceError: quotes is not defined"
我的代码:
var Quotes=Backbone.Collection.extend({
url:“/quotes.json”
});
var UserListView=Backbone.View.extend({
el:“.报价单”,
render:function(){
var=这个;
var quotes=新引号();
quotes.fetch({
成功:函数(引号){
变量变量={
搜索:“搜索”
};
var template=35;.template($('#quotes template').html(),变量);
console.log(模板)
即.$el.html(模板);
}
})
}
});
var Router=Backbone.Router.extend({
路线:{
“”:“家”
}
});
$(文档).ready(函数(){
var userListView=新的userListView;
var路由器=新路由器;
路由器.on('route:home',function(){
//呈现用户列表
userListView.render();
});
Backbone.history.start();
})
-
-
您正在下划线模板中使用变量引号
,但要传递给\uuu.template()
的数据不包含引号
您的代码应该是:
quotes.fetch({
/*---------------collection----------------*/
/*-------------------v----------------*/
success: function(quotes, response, options) {
var variables = {
search: "search"
}; // ...?
var template = _.template($('#quotes-template').html(), {
quotes: quotes
});
that.$el.html(template);
}
});
由于成功回调中的第一个参数引用
是一个主干.Collection
,因此您可能还需要按如下方式更改模板,否则您可以传递第二个参数,这是对的实际响应
-
-
这仍然不起作用。我还试着抛出一个简单的虚拟对象,但仍然得到了相同的错误。由于某种原因,没有任何东西被传递给template@user3417966:您不能再说h=.\u.template(tmpl,variables)
,您必须t=.\u.template(tmpl);h=t(变量)
现在。因此,template
实际上是代码中的一个函数,当您the.$el.html(template)
时,jQuery正在执行该函数()。
<body>
<div class="quote-list"></div>
<script type="text/template" id="quotes-template">
<% _.each(quotes.models, function(quote) { %>
<ul>
<li>
<%=quote.get("source") %>
</li>
<li>
<%=quote.get("context") %>
</li>
</ul>
<% }); %>
</script>
<script src="js/app.js"></script>
</body>