简体   繁体   中英

Re-render view without models changed backbone

i'm rendering a view from a collection of user.When a specific attribute(Status=online,offline) in a user change the view correctly show on the dom the value of attribute changed. But if i want render the view without the model in which the attribute is changed or viceversa add to view a model in wich attribute is changed?

This is a code that send to view a collection with users status online:

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);

And this is a view:

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;
    },

You could filter online users in the render function of your view, I believe you called the users_online collection as model in it, so:

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

or maybe just filter elements out as you append SingleUserView s

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM