gpt4 book ai didi

javascript - Backbone.js 使用计时器刷新 View ?

转载 作者:行者123 更新时间:2023-11-29 09:53:41 25 4
gpt4 key购买 nike

我有一个从 URL 填充的集合:

var PeopleCollection = Backbone.Collection.extend({
model: Person,
url: '/hr/xml-home-3a.php'
});

它使用以下 View :

var PeopleView = Backbone.View.extend({
tagName: 'ul',
initialize: function () {
this.collection = new PeopleCollection();
this.collection.bind("reset", this.render, this);
this.collection.fetch();
},
render: function () {
this.collection.each(function (person) {
var personView = new PersonView({
model: person
});
this.$el.append(personView.render().el);
}, this);
return this;
}
});

我的问题是,我希望此 View 每 5 秒刷新一次,获取新提要并使用此新提要重新显示。

当然,我可以用 JS 重新加载页面本身,但我想知道它是否可以在 Backbone 内部完成。

最佳答案

您可以尝试以下解决方案。也可能有其他解决方法,但我尝试了以下方法。这将重新呈现 subview 并将实例保存在数组中。当它每 5 秒刷新一次时,它将关闭之前的 subview 并使用新的获取数据重新呈现它们。

var PeopleView = Backbone.View.extend({
tagName: 'ul',
initialize: function () {
this.collection = new PeopleCollection();
this.collection.bind("reset", this.render, this);
this.collection.fetch();
},
render: function () {
var self = this;
this.childViews = [];
this.collection.each(function (person) {
var personView = new PersonView({
model: person
});
this.childViews.push(personView);
this.$el.append(personView.render().el);
}, this);

setTimeout(function(){
self.reRender();
}, 5000);

return this;
},
reRender : function(){
var self = this;
this.collection.fetch({
success : function(){
_.each(self.childViews, function(view){
view.remove();
view.unbind();
});

self.childViews= [];
self.render();
}
});
}
});

关于javascript - Backbone.js 使用计时器刷新 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17095198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com