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 Backbone.js:仅渲染集合中的最后一个模型,显示模型总数_Javascript_Backbone.js - Fatal编程技术网

Javascript Backbone.js:仅渲染集合中的最后一个模型,显示模型总数

Javascript Backbone.js:仅渲染集合中的最后一个模型,显示模型总数,javascript,backbone.js,Javascript,Backbone.js,我有一个基本的backbone.js应用程序,可以呈现一组模型。我想修改以仅渲染最后一个模型,并显示模型总数的数字。以下是我目前的代码: var Thing = Backbone.Model.extend({ }); var ThingView = Backbone.View.extend({ el: $('body'), template: _.template('<h3><%= title %></h3>'), ren

我有一个基本的backbone.js应用程序,可以呈现一组模型。我想修改以仅渲染最后一个模型,并显示模型总数的数字。以下是我目前的代码:

 var Thing = Backbone.Model.extend({
 });

 var ThingView = Backbone.View.extend({
    el: $('body'),
     template: _.template('<h3><%= title %></h3>'),

     render: function(){
         var attributes = this.model.toJSON();
         this.$el.append(this.template(attributes));
     }
 });


 var ThingsList = Backbone.Collection.extend({
   model: Thing
});

var things = [
  { title: "Macbook Air", price: 799 },
  { title: "Macbook Pro", price: 999 },
  { title: "The new iPad", price: 399 },
  { title: "Magic Mouse", price: 50 },
  { title: "Cinema Display", price: 799 }
];

var thingsList = new ThingsList(things);


var ThingsListView = Backbone.View.extend({
   el: $('body'),
   render: function(){
     _.each(this.collection.models, function (things) {
            this.renderThing(things);
        }, this);
    },


  renderThing: function(things) {
    var thingView = new ThingView({ model: things }); 
    this.$el.append(thingView.render()); 
  }

});

var thingsListView = new ThingsListView( {collection: thingsList} );
thingsListView.render();
var Thing=Backbone.Model.extend({
});
var ThingView=Backbone.View.extend({
el:$(“正文”),
模板:u.模板(“”),
render:function(){
var attributes=this.model.toJSON();
this.el.append(this.template(attributes));
}
});
var ThingsList=Backbone.Collection.extend({
模型:东西
});
变量事物=[
{标题:“Macbook Air”,价格:799},
{标题:“Macbook Pro”,价格:999},
{标题:“新iPad”,价格:399},
{标题:“神奇鼠标”,价格:50},
{标题:“电影放映”,价格:799}
];
var thingsList=新事物列表(thingsList);
var ThingsListView=Backbone.View.extend({
el:$(“正文”),
render:function(){
_.each(this.collection.models、function(things){
这个。渲染(事物);
},这个);
},
渲染:功能(事物){
var thingView=newthingview({model:things});
这个.el.append(thingView.render());
}
});
var thingsListView=newthingslistview({collection:thingsList});
thingsListView.render();

使用以下方法从集合中获取最后一个型号:

然后,您的
render()
函数将如下所示:

render: function(){
    var last_model = this.collection.at(this.collection.length - 1);
    this.renderThing(last_model);
}
使用属性获取集合中的模型总数:

var total = this.collection.length;
编辑以添加主干,在每个集合上提供了一个方法,由下划线JS提供(感谢您指出这一点)。因此,上述内容可以更容易地写成以下内容:

var last_model = this.collection.last();

我曾尝试使用
collection.length
函数,但一直失败,但进行了一些基本操作:

要获得我推荐的第一款车型,请执行以下操作:

var firstModel = Models.at(0);      
alert(firstModel.get("attribute"));
要获取模型集合中的最后一个模型,请执行以下操作:

var lastModel = Models.pop();
var lastModelId = lastModel .get("id");

集合具有获取最后一个元素的
last
方法。请注意,使用
pop()
将从集合中删除并返回最后一个元素。这可能不是理想的行为。
var lastModel = Models.pop();
var lastModelId = lastModel .get("id");