Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对象未向下传递到主干中的模板_Javascript_Backbone.js_Underscore.js_Backbone Views - Fatal编程技术网

Javascript 对象未向下传递到主干中的模板

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:

我正在尝试进行一个JSON调用,并用主干列出其中的项目。我成功地获取了这些项目,并且能够通过控制台日志确认它们是否可用,但是当我尝试将它们传递到模板中时,我得到一个错误消息

"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>