重新渲染视图,无需模型更改主干

时间:2013-08-10 15:34:50

标签: javascript backbone.js

我正在从用户集合中呈现视图。当用户中的特定属性(Status = online,offline)更改视图时,dom上的属性值会更改。但是,如果我想要渲染视图而没有更改属性的模型,或者反过来添加以查看属性中的模型是否已更改?

这是一个代码,用于发送以查看在线用户状态的集合:

var user_on=Models.utenti.filter(function(model){
return model.get('status') === "on";            
});

var users_online = new Usercollection(user_on);
var page=new Homelistuser({model:users_online});  
this.changePage(page);

这是一个观点:

var Homelistuser = Backbone.View.extend({

tagName: "ul",
id: "list",

template: Handlebars.compile(template),

    initialize: function () {
      Models=this.model;
      this.model.bind("reset", this.render, this);
      $(window).on('orientationchange', this.onOrientationChange);

    },


    render: function (eventName) {
      $(this.el).empty();
      _.each(this.model.models, function (ad) {


        $(this.el).append(new SingleUserView({
          model: ad
        }).render().el);
      }, this);
      return this;
    },

1 个答案:

答案 0 :(得分:1)

您可以在视图的render功能中过滤在线用户,我相信您已将users_online集合称为model,因此:

model.reset(model.filter(function(model){
  return model.get('status') === 'on';            
}));

或者只是在追加SingleUserView s

时过滤掉元素
_.each(this.model.models, function (ad) {
  if (ad.get('status') !== 'on') return;
  $(this.el).append(new SingleUserView({
    model: ad
  }).render().el);
}, this);