无限滚动淘汰多个请求
infinite scroll knockout multiple requests
我想在我的html页面上使用无限滚动。我不知道为什么我有多个服务器答案。。。
$(window).data('jsonpready', true).scroll(function (e) {
if ($(window).data('jsonpready') == false) return;
if ($(window).scrollTop() >= $(document).height() - $(window).height() - 100) {
// $('div#loadmoreajaxloader').show();
$(window).data('jsonpready', false);
viewModel.ui.FlashbackReport.MoreContacts();
console.info("data loading");
if (viewModel.ui.dataAvailable) {
$(window).data('jsonpready', true);
}
}
});
稍后调用映射函数的服务器请求函数:viewModel.ui.FlashbackReport.MoreContacts();
if(viewModel.ui.dataAvailable)
用于测试映射是否已完成
在这里我发现了一个漂亮的实现。http://jsfiddle.net/8x4vG/2/
ko.bindingHandlers.scroll = {
updating: true,
init: function(element, valueAccessor, allBindingsAccessor) {
var self = this
self.updating = true;
ko.utils.domNodeDisposal.addDisposeCallback(element, function() {
$(window).off("scroll.ko.scrollHandler")
self.updating = false
});
},
update: function(element, valueAccessor, allBindingsAccessor){
var props = allBindingsAccessor().scrollOptions
var offset = props.offset ? props.offset : "0"
var loadFunc = props.loadFunc
var load = ko.utils.unwrapObservable(valueAccessor());
var self = this;
if(load){
element.style.display = "";
$(window).on("scroll.ko.scrollHandler", function(){
if(($(document).height() - offset <= $(window).height() + $(window).scrollTop())){
if(self.updating){
loadFunc()
self.updating = false;
}
}
else{
self.updating = true;
}
});
}
else{
element.style.display = "none";
$(window).off("scroll.ko.scrollHandler")
self.updating = false
}
}
}
var viewModel = function(){
this.collection = ko.observableArray([])
var disney = ["Mickey", "Donald", "Daffy", "Hewie", "Dewie", "Lewie"]
var self = this;
this.addSome = function(){
for(var i = 0; i < 40; i++){
self.collection.push(disney[Math.floor((Math.random()*6))])
}
}
this.addSome()
}
ko.applyBindings(new viewModel());
相关文章:
- ajax请求的顺序总是不同的
- Meteor如何接收HTTP请求
- 有没有一种方法可以防止img get请求使用css或js发生
- 从ajax请求中获取javascript对象
- JSONP请求返回结果,但也触发error_callback
- 在localhost Dev Box上测试JSONP请求的最佳方式
- Ajax请求文档就绪会导致jquery加载缓慢
- 淘汰搜索/筛选
- MockJax没有在JavaScript应用程序中发送对我AJAX请求的响应
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- 在openshift node js应用程序中获取请求
- 反应路由器弄乱了请求网址
- 在我的情况下,如何进行http请求
- 消息显示之外的淘汰验证
- 使用密码对话框Javascript请求帮助
- servlet中的请求对象,而不是从jsp接收参数值
- 否'访问控制允许来源'标头存在于IISNOde中请求的资源(AngularJS+NodeJs)上
- JavaScript代码未正确检查ajax请求
- node.js请求数据事件未在CORS ajax调用中触发
- 无限滚动淘汰多个请求