mui.init.pullrefresh.js 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /**
  2. * mui.init pulldownRefresh
  3. * @param {type} $
  4. * @returns {undefined}
  5. */
  6. (function($) {
  7. $.addInit({
  8. name: 'pullrefresh',
  9. index: 1000,
  10. handle: function() {
  11. var options = $.options;
  12. var pullRefreshOptions = options.pullRefresh || {};
  13. var hasPulldown = pullRefreshOptions.down && pullRefreshOptions.down.hasOwnProperty('callback');
  14. var hasPullup = pullRefreshOptions.up && pullRefreshOptions.up.hasOwnProperty('callback');
  15. if(hasPulldown || hasPullup) {
  16. var container = pullRefreshOptions.container;
  17. if(container) {
  18. var $container = $(container);
  19. if($container.length === 1) {
  20. if($.os.plus) { //5+环境
  21. if(hasPulldown && pullRefreshOptions.down.style == "circle") { //原生转圈
  22. $.plusReady(function() {
  23. //这里改写$.fn.pullRefresh
  24. $.fn.pullRefresh = $.fn.pullRefresh_native;
  25. $container.pullRefresh(pullRefreshOptions);
  26. });
  27. } else if($.os.android) { //非原生转圈,但是Android环境
  28. $.plusReady(function() {
  29. //这里改写$.fn.pullRefresh
  30. $.fn.pullRefresh = $.fn.pullRefresh_native
  31. var webview = plus.webview.currentWebview();
  32. if(window.__NWin_Enable__ === false) { //不支持多webview
  33. $container.pullRefresh(pullRefreshOptions);
  34. } else {
  35. if(hasPullup) {
  36. //当前页面初始化pullup
  37. var upOptions = {};
  38. upOptions.up = pullRefreshOptions.up;
  39. upOptions.webviewId = webview.id || webview.getURL();
  40. $container.pullRefresh(upOptions);
  41. }
  42. if(hasPulldown) {
  43. var parent = webview.parent();
  44. var id = webview.id || webview.getURL();
  45. if(parent) {
  46. if(!hasPullup) { //如果没有上拉加载,需要手动初始化一个默认的pullRefresh,以便当前页面容器可以调用endPulldownToRefresh等方法
  47. $container.pullRefresh({
  48. webviewId: id
  49. });
  50. }
  51. var downOptions = {
  52. webviewId: id//子页面id
  53. };
  54. downOptions.down = $.extend({}, pullRefreshOptions.down);
  55. downOptions.down.callback = '_CALLBACK';
  56. //改写父页面的$.fn.pullRefresh
  57. parent.evalJS("mui.fn.pullRefresh=mui.fn.pullRefresh_native");
  58. //父页面初始化pulldown
  59. parent.evalJS("mui&&mui(document.querySelector('.mui-content')).pullRefresh('" + JSON.stringify(downOptions) + "')");
  60. }
  61. }
  62. }
  63. });
  64. } else { //非原生转圈,iOS环境
  65. $container.pullRefresh(pullRefreshOptions);
  66. }
  67. } else {
  68. $container.pullRefresh(pullRefreshOptions);
  69. }
  70. }
  71. }
  72. }
  73. }
  74. });
  75. })(mui);