gpt4 book ai didi

javascript - Backbonejs 在另一个函数中调用集合的 fetch 方法是个好主意吗?如果不是我应该用什么?

转载 作者:行者123 更新时间:2023-12-03 12:02:32 25 4
gpt4 key购买 nike

我正在尝试使用 Backbonejs 实现无限滚动。我的 View 初始化一个集合并调用 fetch 获取函数。

我的看法

var app = app || {};

app.PostListView = Backbone.View.extend({
el: '#posts',
initialize: function( ) {
this.collection = new app.PostList();
this.collection.on("sync", this.render, this);
this.collection.fetch();
this.render();
},
render: function() {
/*render posts*/
}
});

在我的页面中我添加了以下代码。它检查用户是否位于页面底部。如果是,则检查 View 是否已初始化。如果是,则调用 View 集合对象的 View 获取函数。

var app = app || {};

$(function() {
var post_view;
$(window).scroll(function() {

if(($(window).scrollTop() + $(window).height() == getDocHeight()) && busy==0) {
if(!post_view){
post_view = new app.PostListView();
} else {
post_view.collection.fetch();
}
}
});
});

到目前为止,这段代码正在运行。我不确定这是否是正确的方法?

最佳答案

这不是一个坏选择;它有效,Backbone 正在做到这一点 collection可供您使用。但还有其他几个选项需要考虑:

  • 移动那个collection.fetch进入方法 getMoreItems()在你的PostListView里面,并在您的 else 中调用它堵塞。这样你就可以将逻辑封装在 View 中。这样您的应用程序将更加模块化,并且您可以使滚动更加智能,而无需更新应用程序的其余部分。
  • 将滚动监听器移至 PostListView 内。我可能会把它放在你的 PostListView 中的initialize功能。同样,这减少了应用程序各个部分之间的依赖性 - 您不必记住“每当我创建 PostListView 时,我必须记住在滚动时更新它。”通过在 PostListView 内设置该事件监听器它本身,你所要做的就是创造它。 Backbone 的总体理念是拥有小的、独立的组件来管理自己的状态;将事件监听器移动到里面就可以了。

关于javascript - Backbonejs 在另一个函数中调用集合的 fetch 方法是个好主意吗?如果不是我应该用什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25348063/

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