我正在学习主干,现在正在考虑如何应用无限卷轴,并在每次卷轴位于页面底部时从我的收藏中提取/加载20个项目。我一直在寻找不同的LIB之类的东西,但没有真正接近。有谁能解释/展示这是如何最好地完成的?
我现在已经添加了infiniscroll.js插件并试图让它工作。但是在滚动中它不会加载新项目。我应该在appendRender上做什么?怎么做?
var StartView = Backbone.View.extend({
tagName: "section",
id: "start",
className: "content",
events: {
},
initialize: function(){
$(".container").html(this.el);
console.log("init start");
this.template = _.template($("#start_template").html(), {} );
this.collection = new VideoCollection();
_.bindAll(this, "render");
this.render();
this.infiniScroll = new Backbone.InfiniScroll(this.collection, {
success: this.appendRender,
pageSize: this.collection.length,
scrollOffset: 100
});
},
appendRender: function() {
var self = this;
self.$el.html(self.template);
self.$el.find(".videos").append("<div style='margin-bottom:30px; width:100%; height:170px; float:left; background-color:#e4e4e4;'>fff</div>")
},
render: function(){
var self = this;
this.$el.html("loading");
console.log("render start")
},
kill: function() {
console.log("kill start");
this.remove();
}
});
return StartView;
我会这样做(尽管document.addEventListener(“滚动”)部分并不优雅
(function() {
"use strict";
var Item = Backbone.Model.extend({});
var Items = Backbone.Collection.extend({
model: Item,
url: "/api/items/"
});
var ItemView = Backbone.View.extend({
tagName: "li",
render: function() {
this.$el.html(this.model.get("name"));
return this;
}
});
var ItemsList = Backbone.View.extend({
tagName: "ul",
offset: 0,
limit: 60,
initialize: function() {
this.collection = new Items();
this.collection.on("reset", this.addAll, this);
this.collection.on("add", this.addOne, this);
this.getItems();
},
render: function () {
return this;
},
getItems: function () {
this.collection.fetch({
"data": {"offset": this.offset, "limit": this.limit},
"success": _.bind(function(e){
this.offset += this.limit;
}, this)
});
},
addOne: function(item) {
var view = new ItemView({model: item});
this.$el.append(view.render().$el);
},
addAll: function() {
this.collection.each(this.addOne, this);
}
});
var itemsList = new ItemsList();
$(document.body).append(itemsList.render().$el);
document.addEventListener('scroll', function (event) {
if (document.body.scrollHeight == document.body.scrollTop + window.innerHeight) {
itemsList.getItems();
}
});
}());
主干可分页插件支持无限滚动。
这只是您的收藏扩展主干的问题。PageableCollection,并指定一些额外属性。还有一个主干视图示例,它可以监听不断变化的集合,也可以在滚动中获取。
这一切都在github页面上描述。它更新得相当频繁。
我用脊梁骨。js 我试图从服务器获取我的数据,但它不起作用 (服务器发送json对象) 我搜索了但没有回应 我的代码哪里不正确?
下面是我用(FacetModels)填充我的收藏的内容 如何访问可用值[]数组 “FacetModels”:[{“FacetDisplayLabel”:null,“SelectedValues”:[],“AvailableValues”:[],“UnknownResults”:0,“ActionURI”:null,“FacetGroupName”:“Category”,“FacetGroupFri
我刚决定学骨气。我在看视频教程。这里的一切都很好,但在我的末尾,我遇到了一个错误“Uncaught TypeError:无法读取未定义的属性'name'。 这是我的代码: “项目详细信息”函数给出了“未捕获的TypeError:无法读取未定义的属性“名称”错误。当然,如果我在视图中不使用“名称”属性,我会得到“未捕获的TypeError:无法读取未定义的属性“类别”。在我跟随的视频教程中,一切正常
我正在向我的主干集合中添加一个项目,如下所示: 我在MyCollection中覆盖了同步,如下所示: 但是,似乎在add之后不会调用sync,add成功执行并触发“add”事件。我错过什么了吗?还是这是正确的行为?
我正在尝试使用主干从MySQL(使用基于PHP的API)获取数据。我想检索20个批次的项目。例如,我有10000条记录,但只想在页面加载时显示20条记录。当用户向下滚动时,我希望在每次到达页面底部时加载下一个20。我的查询没有按ID(按设计)排序,因此可能会增加一级复杂性。如何在主干中实现这一点?
我有一个骨干应用程序,我正在构建与Trigger.io,并有一点困惑,为什么当我单击手机工具栏中的后退按钮时,数据正在消失。 以下是设置: 我有一个视图SearchResultsView,看起来像这样(为了简洁起见删除了Trigger.io代码): 以下是模板: 这是路由器: 它在实践中是这样工作的:当我最初加载页面时,没有结果列表(应该是这样)。我输入查询并执行搜索,然后它会回来,按照它应该的方