更新2

我可以使用它,但为了解决这个问题,我只是更改了var名称,但是现在我对其进行JSON编码,而且一切似乎都可以正常工作。

谢谢

格伦

更新

这种工作现在要感谢您的帖子,但是就像我在评论中说的那样,我只能在console.log数据时输出数据?

所以这个可行,

   <script type="text/template" id="Template">
        <% _.each(MyXX, function(MyXX) { %>
           <%= console.log(MyXX.get('title')) %>
           <%= console.log(MyXX.get('path')) %>
           <%= console.log(MyXX.get('level')) %>
        <% }); %>
     </script>


但是当我这样做时

   <script type="text/template" id="Template">
        <% _.each(MyXX, function(MyXX) { %>
          <div> <%= MyXX.get('title') %> </div>
          <div> <%= MyXX.get('path') %> </div>
          <div> <%= MyXX.get('level') %></div>
        <% }); %>
     </script>


在我的BB代码中,班上没有任何东西显示。

格伦



我有一个使用PHP Slim的主干安装程序,在此的每个阶段都问了很多问题,现在大部分都在工作。

但是我的下划线模板没有做正确的事。我可以访问第一个“结果”,但比该结果更深的内容会以未定义的形式返回?

这是我的模板文件

  <script type="text/template" id="Template">
      <% _.each(MyCol, function(MyBB) { %>

      <%= console.log(MyCol.id) %>
      <%= console.log(MyCol.level) %>

      <% }); %>

  </script>


因此,这可以很好地从模型中输出id,但是“级别”或其他任何内容只是作为未定义返回?当我只输出 console.log(MyCol) 时,所有模型都显示良好,选择模型的attribute标签,显示所有数据都正在传递到我的模板中,那我要怎么做呢?

这是要加载到模板中的BackBone视图设置,

var MyView = Backbone.View.extend({

  el: '.page',
  render: function() {
      var that = this;
      var MyCol = new CollectionSetOne();

       MyMenu.fetch({
        success: function(MyCol) {
            var temp = _.template( $('#MenuTemplate').html(), {MyCol: MyCol.models} );
            that.$el.html(menutemp);
            //return this;
        }
      });

  }
});


那我哪里错了?

其中大部分来自YouTube上的Backbone.js教程,https://www.youtube.com/watch?v=FZSjvWtUxYk

所有帮助都非常欢迎,

格伦

最佳答案

你这里有几个问题。首先是您要引用MyCol(要迭代的模型数组),而您应该引用MyBB(特定模型):

<script type="text/template" id="Template">
    <% _.each(MyCol, function(MyBB) { %>
        Use MyBB in here, not MyCol...
    <% }); %>
</script>


下一个问题是Backbone模型属性与JavaScript对象属性相同。您将属性称为:

obj.property


但是属性存储在model.attributes中,并使用get访问:

obj.get('attribute')


id属性也存储在id property中,因此model.id将起作用。

您的模板应该看起来像这样:

<script type="text/template" id="Template">
    <% _.each(MyCol, function(MyBB) { %>
        <% console.log(MyBB.id) %>
        <% console.log(MyBB.get('level')) %>
    <% }); %>
</script>


通常的惯例(可能是造成混淆的原因)是调用toJSON序列化视图的集合:

var tmpl = _.template($('#MenuTemplate').html());
var html = tmpl({ MyCol: MyCol.toJSON() });
that.$el.html(html);


然后,模板中的MyCol将是一个简单的对象数组,您可以说:

<% console.log(MyBB.id) %>
<% console.log(MyBB.level) %>

关于javascript - 我的Underscore模板不会加载/显示所有模型数据,但是可以访问吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22866492/

10-14 09:01