[英]Re-render view without models changed backbone
我正在从用户集合中渲染视图。当用户中的特定属性(状态=在线,离线)更改视图时,在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;
},
您可以在视图的render
功能中过滤在线用户,我相信您在其中将users_online
集合称为model
,因此:
model.reset(model.filter(function(model){
return model.get('status') === 'on';
}));
或者在追加SingleUserView
仅滤除元素
_.each(this.model.models, function (ad) {
if (ad.get('status') !== 'on') return;
$(this.el).append(new SingleUserView({
model: ad
}).render().el);
}, this);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.