当前位置:   article > 正文

【Kissy WaterFall】实行手动加载数据

waterfall的数据

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


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


步骤:

  1. 当一页数据加载完成后停止监听滚动事件
    1. //加载一页数据完成后触发的事件
    2. waterfall.on('addComplete', function () {
    3. S.log('after add complete!');
    4. waterfall.pause();
    5. });

  2. 为按钮绑定重启监听滚动事件
    1. //加载更多按钮
    2. $("#button_container_more").on('click',function(){
    3. waterfall.resunme();
    4. });

  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事件。

代码如下:

  1. $("#button_container_more").on('click',function(){
  2. waterfall = new Waterfall.Loader({
  3. container:"#ColumnContainer",
  4. load:function (success, end) {
  5. $('#loadingPins').show();
  6. $('.loader').hide();
  7. S.ajax({
  8. data:{
  9. 'method':'flickr.photos.search',
  10. 'api_key':'5d93c2e473e39e9307e86d4a01381266',
  11. 'tags':'rose',
  12. 'page':nextpage,
  13. 'per_page':20,
  14. 'format':'json'
  15. },
  16. url:'http://api.flickr.com/services/rest/',
  17. dataType:"jsonp",
  18. jsonp:"jsoncallback",
  19. success:function (d) {
  20. // 如果数据错误, 则立即结束
  21. if (d.stat !== 'ok') {
  22. alert('load data error!');
  23. end();
  24. return;
  25. }
  26. // 如果到最后一页了, 也结束加载
  27. nextpage = d.photos.page + 1;
  28. if (nextpage > d.photos.pages) {
  29. end();
  30. return;
  31. }
  32. // 拼装每页数据
  33. var items = [];
  34. S.each(d.photos.photo, function (item) {
  35. /*所用到的字段:
  36. **price
  37. **height
  38. **collection
  39. **title
  40. **src
  41. */
  42. item.height = Math.round(Math.random() * (300 - 180) + 180); // fake height
  43. item.collection = 10; //测试用
  44. item.price = 1800; //测试用
  45. items.push(S.substitute(tpl,item));
  46. });
  47. success(items);
  48. },
  49. complete:function () {
  50. $('#loadingPins').hide();
  51. $('.loader').show();
  52. }
  53. });
  54. },
  55. minColCount:2,
  56. colWidth:175
  57. //align:'left' // right, center (default)
  58. });
  59. waterfall.on('addComplete', function () {
  60. S.log('after add complete!');
  61. waterfall.pause();
  62. });
  63. });


最终整个脚本文件:

  1. KISSY.use("waterfall,ajax,node,button", function (S, Waterfall, io, Node, Button) {
  2. var $ = Node.all;
  3. var tpl = $('#tpl').html(),
  4. nextpage = 1,
  5. waterfall = new Waterfall.Loader({
  6. container:"#ColumnContainer",
  7. load:function (success, end) {
  8. $('#loadingPins').show();
  9. S.ajax({
  10. data:{
  11. 'method':'flickr.photos.search',
  12. 'api_key':'5d93c2e473e39e9307e86d4a01381266',
  13. 'tags':'rose',
  14. 'page':nextpage,
  15. 'per_page':20,
  16. 'format':'json'
  17. },
  18. url:'http://api.flickr.com/services/rest/',
  19. dataType:"jsonp",
  20. jsonp:"jsoncallback",
  21. success:function (d) {
  22. // 如果数据错误, 则立即结束
  23. if (d.stat !== 'ok') {
  24. alert('load data error!');
  25. end();
  26. return;
  27. }
  28. // 如果到最后一页了, 也结束加载
  29. nextpage = d.photos.page + 1;
  30. if (nextpage > d.photos.pages) {
  31. end();
  32. return;
  33. }
  34. // 拼装每页数据
  35. var items = [];
  36. S.each(d.photos.photo, function (item) {
  37. /*所用到的字段:
  38. **price
  39. **height
  40. **collection
  41. **title
  42. **src
  43. */
  44. item.height = Math.round(Math.random() * (300 - 180) + 180); // fake height
  45. item.collection = 10; //测试用
  46. item.price = 1800; //测试用
  47. items.push(S.substitute(tpl,item));
  48. });
  49. success(items);
  50. },
  51. complete:function () {
  52. $('#loadingPins').hide();
  53. }
  54. });
  55. },
  56. minColCount:2,
  57. colWidth:175
  58. //align:'left' // right, center (default)
  59. });
  60. waterfall.on('adjustComplete', function () {
  61. S.log('after adjust complete!');
  62. });
  63. //加载一页数据完成后触发的事件
  64. waterfall.on('addComplete', function () {
  65. S.log('after add complete!');
  66. waterfall.pause();
  67. });
  68. // scrollTo
  69. $('#BackToTop').on('click', function (e) {
  70. e.halt();
  71. e.preventDefault();
  72. $(window).stop();
  73. $(window).animate({
  74. scrollTop:0
  75. }, 1, "easeOut");
  76. });
  77. //加载更多按钮
  78. $("#button_container_more").on('click',function(){
  79. waterfall = new Waterfall.Loader({
  80. container:"#ColumnContainer",
  81. load:function (success, end) {
  82. $('#loadingPins').show();
  83. $('.loader').hide();
  84. S.ajax({
  85. data:{
  86. 'method':'flickr.photos.search',
  87. 'api_key':'5d93c2e473e39e9307e86d4a01381266',
  88. 'tags':'rose',
  89. 'page':nextpage,
  90. 'per_page':20,
  91. 'format':'json'
  92. },
  93. url:'http://api.flickr.com/services/rest/',
  94. dataType:"jsonp",
  95. jsonp:"jsoncallback",
  96. success:function (d) {
  97. // 如果数据错误, 则立即结束
  98. if (d.stat !== 'ok') {
  99. alert('load data error!');
  100. end();
  101. return;
  102. }
  103. // 如果到最后一页了, 也结束加载
  104. nextpage = d.photos.page + 1;
  105. if (nextpage > d.photos.pages) {
  106. end();
  107. return;
  108. }
  109. // 拼装每页数据
  110. var items = [];
  111. S.each(d.photos.photo, function (item) {
  112. /*所用到的字段:
  113. **price
  114. **height
  115. **collection
  116. **title
  117. **src
  118. */
  119. item.height = Math.round(Math.random() * (300 - 180) + 180); // fake height
  120. item.collection = 10; //测试用
  121. item.price = 1800; //测试用
  122. items.push(S.substitute(tpl,item));
  123. });
  124. success(items);
  125. },
  126. complete:function () {
  127. $('#loadingPins').hide();
  128. $('.loader').show();
  129. }
  130. });
  131. },
  132. minColCount:2,
  133. colWidth:175
  134. //align:'left' // right, center (default)
  135. });
  136. waterfall.on('addComplete', function () {
  137. S.log('after add complete!');
  138. waterfall.pause();
  139. });
  140. });
  141. //收藏按钮功能
  142. var collect;
  143. $('#ColumnContainer').delegate("mouseover", ".collect", function (event) {
  144. var w = $(event.currentTarget).children("span");
  145. var text = w.text();
  146. if(text >= 0){
  147. collect = text;
  148. }
  149. w.replaceWith("<span class='collects'>收藏</span>");
  150. //w.css("text-indent","3px");
  151. });
  152. $('#ColumnContainer').delegate("mouseout", ".collect", function (event) {
  153. var w = $(event.currentTarget).children("span");
  154. w.replaceWith("<span class='collectionAmount'>"+collect+"</span>");
  155. //w.css("text-indent","13px");
  156. });
  157. });


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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/186982
推荐阅读
相关标签
  

闽ICP备14008679号