0

我正在尝试制作一些非标准的主干应用程序,在集线器下使用 requery.js 结构我从我的集合中的 XML 加载数据,并尝试在视图页面上显示它。

define([
  'jquery',
  'underscore',
  'backbone',
  'models/products'
], function($, _, Backbone, ProductsModel){
  var ProductsCollection = Backbone.Collection.extend({
    model: ProductsModel,
    url: "Labels.xml",
    parse: function(data) {
    var parsed=[];
    $(data).find('item').each(function (index) {
        var productNode = $(this).attr('nodeID');
        var productNodeValue = $(this).text();
        parsed.push({ title: productNode, value: productNodeValue });
    });
    return parsed;
},

fetch: function(options) {
    options || (options = {});
    options.dataType="xml";
    Backbone.Collection.prototype.fetch.call(this, options);
},
initialize: function(){
}

  });

  return ProductsCollection;
});

这是一个集合,到目前为止它充满了来自 XML 的数据,但我想在页面上显示它.. 视图看起来像这样

define([
  'jquery',
  'underscore',
  'backbone',
  // Pull in the Collection module from above
  'collections/products',
  'text!templates/products/main.html'

 ], function($, _, Backbone, ProductsCollection, productsListTemplate){
  var productsListView = Backbone.View.extend({
    el: $("#page"),
    render: function(){
      var data = {
        productDetails: this.collection,
        _: _ 
      };
      var compiledTemplate = _.template( productsListTemplate, data );
      this.$el.html( compiledTemplate ); 
    },  
    initialize: function(){
      this.collection = new ProductsCollection();
      this.collection = this.collection.fetch();
    }
  });
   return productsListView;
});

在页面上我尝试展示它

<ul>
  <% _.each(productDetails, function(project){ %>
   <li><%= product.get("title") %> - <%= product.get("value") %></li> 
  <% }); %>
</ul>

但我总是收到错误 _each 格式不正确。主要思想是从 XML 加载标签和按钮事件并将其显示在页面上。

4

2 回答 2

0

你想传递给你的模板 this.collection.models不仅仅是this.collection

var data = {
  productDetails: this.collection.models,
  _: _ 
};

因为您使用的是 Underscore 而不是 Backbone。循环的主干方式是

Books.each(function(book) {
   book.publish();
});
于 2012-10-21T01:07:24.460 回答
0

我不知道您是否仍然遇到此问题,但您的代码中有错误:

<ul> <% _.each(productDetails, function(project){ %> <li><%= product.get("title") %> - <%= product.get("value") %></li> <% }); %> </ul>

应该:

<ul> <% _.each(productDetails, function(product){ %> <li><%= product.get("title") %> - <%= product.get("value") %></li> <% }); %> </ul>

于 2013-09-10T20:31:35.397 回答