前言:由于Kissy WaterFall默认是监听滚动事件来实现数据动态加载的,但是有一些情况要用到手动加载数据。以下是使用Kissy WaterFall实现手动加载数据的方法。

最终实现效果:点击”逛更多的商店“会动态加载数据

步骤:

  1. 当一页数据加载完成后停止监听滚动事件

       //加载一页数据完成后触发的事件waterfall.on('addComplete', function () {S.log('after add complete!');waterfall.pause();});
  2. 为按钮绑定重启监听滚动事件
     //加载更多按钮$("#button_container_more").on('click',function(){  waterfall.resunme();});
  3. 附录:waterfall.pause()与water.resunme()的说明(从官网上转载的)
    pause()函数和resunme()函数属于插件里的waterfall.loader对象的

    resunme() :继续开始监控scroll事件(随时可能会动态加载)
    pause() :停止监控scroll事件(停止动态加载)

    参考网址:http://docs.kissyui.com/docs/html/api/component/waterfall/loader.html#waterfall.Waterfall.prototype.pause

出现问题:按照以上来完成的话,当点击”加载更多“按钮时,只是启动了滚动监听。意思就是,要加载数据,一要点击按钮,二要再次滚动鼠标。这样的用户体验很差。

解决办法:修改按钮动作:new一个waterfall.loader,重新赋值waterfall对象,再重新绑定addComplete事件。

代码如下:

  $("#button_container_more").on('click',function(){  waterfall = new Waterfall.Loader({container:"#ColumnContainer",load:function (success, end) {$('#loadingPins').show();$('.loader').hide();S.ajax({data:{'method':'flickr.photos.search','api_key':'5d93c2e473e39e9307e86d4a01381266','tags':'rose','page':nextpage,'per_page':20,'format':'json'},url:'http://api.flickr.com/services/rest/',dataType:"jsonp",jsonp:"jsoncallback",success:function (d) {// 如果数据错误, 则立即结束if (d.stat !== 'ok') {alert('load data error!');end();return;}// 如果到最后一页了, 也结束加载nextpage = d.photos.page + 1;if (nextpage > d.photos.pages) {end();return;}// 拼装每页数据var items = [];S.each(d.photos.photo, function (item) {/*所用到的字段:**price**height**collection**title**src*/item.height = Math.round(Math.random() * (300 - 180) + 180); // fake height item.collection = 10;  //测试用item.price = 1800;        //测试用items.push(S.substitute(tpl,item));});success(items);},complete:function () {$('#loadingPins').hide();$('.loader').show();}});},minColCount:2,colWidth:175//align:'left' // right, center (default)});waterfall.on('addComplete', function () {S.log('after add complete!');waterfall.pause();});        });

最终整个脚本文件:

KISSY.use("waterfall,ajax,node,button", function (S, Waterfall, io,  Node, Button) {var $ = Node.all;var tpl = $('#tpl').html(),nextpage = 1,waterfall = new Waterfall.Loader({container:"#ColumnContainer",load:function (success, end) {$('#loadingPins').show();S.ajax({data:{'method':'flickr.photos.search','api_key':'5d93c2e473e39e9307e86d4a01381266','tags':'rose','page':nextpage,'per_page':20,'format':'json'},url:'http://api.flickr.com/services/rest/',dataType:"jsonp",jsonp:"jsoncallback",success:function (d) {// 如果数据错误, 则立即结束if (d.stat !== 'ok') {alert('load data error!');end();return;}// 如果到最后一页了, 也结束加载nextpage = d.photos.page + 1;if (nextpage > d.photos.pages) {end();return;}// 拼装每页数据var items = [];S.each(d.photos.photo, function (item) {/*所用到的字段:**price**height**collection**title**src*/item.height = Math.round(Math.random() * (300 - 180) + 180); // fake height   item.collection = 10;  //测试用item.price = 1800;        //测试用items.push(S.substitute(tpl,item));});success(items);},complete:function () {$('#loadingPins').hide();}});},minColCount:2,colWidth:175//align:'left' // right, center (default)});waterfall.on('adjustComplete', function () {S.log('after adjust complete!');});//加载一页数据完成后触发的事件waterfall.on('addComplete', function () {S.log('after add complete!');waterfall.pause();});// scrollTo$('#BackToTop').on('click', function (e) {e.halt();e.preventDefault();$(window).stop();$(window).animate({scrollTop:0}, 1, "easeOut");});//加载更多按钮$("#button_container_more").on('click',function(){   waterfall = new Waterfall.Loader({container:"#ColumnContainer",load:function (success, end) {$('#loadingPins').show();$('.loader').hide();S.ajax({data:{'method':'flickr.photos.search','api_key':'5d93c2e473e39e9307e86d4a01381266','tags':'rose','page':nextpage,'per_page':20,'format':'json'},url:'http://api.flickr.com/services/rest/',dataType:"jsonp",jsonp:"jsoncallback",success:function (d) {// 如果数据错误, 则立即结束if (d.stat !== 'ok') {alert('load data error!');end();return;}// 如果到最后一页了, 也结束加载nextpage = d.photos.page + 1;if (nextpage > d.photos.pages) {end();return;}// 拼装每页数据var items = [];S.each(d.photos.photo, function (item) {/*所用到的字段:**price**height**collection**title**src*/item.height = Math.round(Math.random() * (300 - 180) + 180); // fake height item.collection = 10;  //测试用item.price = 1800;        //测试用items.push(S.substitute(tpl,item));});success(items);},complete:function () {$('#loadingPins').hide();$('.loader').show();}});},minColCount:2,colWidth:175//align:'left' // right, center (default)});waterfall.on('addComplete', function () {S.log('after add complete!');waterfall.pause();});        });//收藏按钮功能var collect;$('#ColumnContainer').delegate("mouseover", ".collect", function (event) {var w = $(event.currentTarget).children("span");var text = w.text();if(text >= 0){collect = text;}w.replaceWith("<span class='collects'>收藏</span>");//w.css("text-indent","3px");});$('#ColumnContainer').delegate("mouseout", ".collect", function (event) {var w = $(event.currentTarget).children("span");w.replaceWith("<span class='collectionAmount'>"+collect+"</span>");//w.css("text-indent","13px");});});

转载于:https://www.cnblogs.com/JerryC/p/3832149.html

【Kissy WaterFall】实行手动加载数据相关推荐

  1. vue2.0无限滚动加载数据插件

      做vue项目用到下拉滚动加载数据功能,由于选的UI库(element)没有这个组件,就用Vue-infinite-loading 这个插件代替,使用中遇到的一些问题及使用方法,总结作记录! 安装: ...

  2. 用python的五种方式_Python加载数据的5种不同方式(收藏)

    数据是数据科学家的基础,因此了解许多加载数据进行分析的方法至关重要.在这里,我们将介绍五种Python数据输入技术,并提供代码示例供您参考. 作为初学者,您可能只知道一种使用p andas.read_ ...

  3. bootstrap 数据加载中提示_解决Quartz定时器中查询懒加载数据no session的问题

    作者:下一秒升华 出自:CSDN 原文:blog.csdn.net/u013815546/article/details/53032445 相信大家在web开发过程中一定遇到过一种情况,Class班级 ...

  4. 【TensorFlow-windows】keras接口——利用tensorflow的方法加载数据

    前言 之前使用tensorflow和keras的时候,都各自有一套数据读取方法,但是遇到一个问题就是,在训练的时候,GPU的利用率忽高忽低,极大可能是由于训练过程中读取每个batch数据造成的,所以又 ...

  5. List 分页加载数据控制机制

    分页加载是一种应用很广泛的数据展示控制机制,相信绝大多数开发者对于这一套机制都非常熟悉.这篇文章的主要目的结合实际的使用场景,对以往在开发中遇到一些概念进行梳理,归纳的同时加深理解,也希望能帮助更多刚 ...

  6. easyui datatable ajax 加载数据,ASP.NET easyUI--datagrid 通过ajax请求ASP.NET后台数据的分页查询...

    js前台对datagrid的定义代码,如下 mygrid = $('#mytable').datagrid({ fit: true, //自动大小 height: 'auto', rownumbers ...

  7. [转]ListView滚动到底部自动加载数据

    转自:http://blog.csdn.net/shineflowers/article/details/41744241 在Android中有很多时候会选择用ListView加载数据,有的是分批加载 ...

  8. python数据加载常规教程_Python加载数据的5种不同方式(收藏)

    数据是数据科学家的基础,因此了解许多加载数据进行分析的方法至关重要.在这里,我们将介绍五种Python数据输入技术,并提供代码示例供您参考. 作为初学者,您可能只知道一种使用p andas.read_ ...

  9. DSP6678加载数据

    开发环境:DSP6678开发板+CCS5.5+win7. 因为项目需要把81M的数据放入DDR3中处理,所以第一步就是如何加载数据.DSP6678识别的数据类型是dat.bin.raw.yuv. 加载 ...

最新文章

  1. SCCM 2012 SP1升级
  2. mysql 安装dso命令_LAMP环境搭建
  3. php 更新页面代码,php – 自动更新页面的代码大纲
  4. 操作多个表_8_不等值连接
  5. C++动态链接库的制作
  6. 抓眼球包装设计样机模板,色彩秘籍都在这里了!
  7. MySQL遇到的知识点
  8. 常用Linux网络/内存/磁盘分析工具
  9. Codeforces 1110D. Jongmah 动态规划
  10. 12.10上海交大PMP试题每日一题
  11. 基于ssm+java+sql企业名录综合统计系统
  12. excel中将两列交叉合并为一列
  13. ARM与裸机开发教程
  14. 淘宝2011春季校园招聘笔试试题(回忆版)(附个人简历)
  15. JQ获取本地JSON文件中的数据 模拟分页效果 - 初学
  16. 201871010104-陈园园 《面向对象程序设计(java)》第四周学习总结
  17. 继金字塔数142857外第二组世界上最神奇的数字
  18. 一个http请求的全过程是怎样的?
  19. 关于学习Java是应该是自学还是选择培训班
  20. RPA+AI入门必须知道的39个名词

热门文章

  1. uva 1394poj 3517
  2. julia常用矩阵函数_Julia系列教程3 数学运算 矩阵运算
  3. sudoers 用户权限配置_使用sudo让普通用户获取root用户的权限
  4. 隐马尔科夫模型C#语言算法实现
  5. c++ 显示图片_飞利浦256P1FR显示器一线直连MacBook使用体验分享
  6. 产品经理经验谈:与产品经理有关的100件小事儿~
  7. java中三个基本框架_对于Java基础者应该如何理解Java中的三大框架!
  8. java 支付重复问题_Airbnb支付系统如何在分布式环境下避免重复打款
  9. 《javaScript100例|03》自写javaScript+CSS轮显效果
  10. 教你玩转CSS表格(table)