0

模板代码:

<script type="text/template" id="baseTemplate">
        <% collection.each(function() { %>
            <div>
                <%= collection %>
            </div>
        <% }); %>
</script>
<div id="baseContainer"></div>

其他代码是:

//model
var PageModel = Backbone.Model.extend({
    defaults: {
        "id":null,
        "title":"",
        "content":""
    },
});
//collection
var PageCollection = Backbone.Collection.extend({
    defaults: {
        model: PageModel
    },
    model: PageModel,
    url: 'api/get_page/?id=6'
});
//view
var PageView = Backbone.View.extend({

    el: $('#baseContainer'),

    initialize: function () {
        this.collection = new PageCollection();
        this.collection.bind("reset", this.render, this);
        this.collection.bind("change", this.render, this);
        this.collection.fetch();
    },
    render: function () {

    var html = _.template($("#baseTemplate").html(), { collection: this.collection });
    this.$el.html(html);
    console.log(html);
    return this;
    }
});

 var page = new PageView();

问题是它的返回和对象我如何从对象中获取值?api 链接http://furqankhanzada.com/backbonejs/api/get_page/?id=6在这里,您可以在浏览器控制台中看到对象,http://furqankhanzada.com/backbonejs/ 我需要获取标题、内容、附件 -> 图像 -> 大画廊 -> url(使用 each() 的附件)。

4

1 回答 1

1

不确定这是否是正确的解决方案,但您可以尝试一下。

另一种可能是,

var html = _.template($("#baseTemplate").html(), { models: this.collection.models });

传递模型而不是直接传递集合。在模板中你可以做这样的事情,

<script type="text/template" id="baseTemplate">
  <% _.each(models, function(mdl) { %>
    <div>
      <%= mdl.get('title') %>
      <%= mdl.get('content') %>
      <% _.each(mdl.get('page').attachments, function(attachment) { %>
        <%= attachment.images["Gallery Large"].url %>
     <% }) %>  
   </div>
  <% }); %>
</script>
<div id="baseContainer"></div>

请根据您的需要修改标记。但是这个解决方案对问题来说太具体了:( :(

于 2012-11-03T07:43:12.980 回答