> 웹 프론트엔드 > JS 튜토리얼 > 풀업 로딩 및 풀다운 새로 고침의 MUI 구현 공유 예

풀업 로딩 및 풀다운 새로 고침의 MUI 구현 공유 예

零下一度
풀어 주다: 2018-05-25 10:07:34
원래의
3595명이 탐색했습니다.

이 글은 주로 MUI의 풀업 로딩 및 풀다운 새로 고침 효과를 모든 사람에게 자세히 소개합니다. 관심 있는 친구들이 참고할 수 있습니다.

이 글의 예는 MUI 구현을 공유합니다. 풀업 로딩 및 풀다운. 참조를 위해 표시된 특정 코드를 새로 고칩니다. 구체적인 내용은 다음과 같습니다.

Write저장 프로시저pagination(여기서는 T-SQL이 사용됨)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

CREATE PROC [dbo].[Common_PageList]

(

@tab nvarchar(max),---表名

@strFld nvarchar(max), --字段字符串

@strWhere varchar(max), --where条件

@PageIndex int, --页码

@PageSize int, --每页容纳的记录数

@Sort VARCHAR(255), --排序字段及规则,不用加order by

@IsGetCount bit --是否得到记录总数,1为得到记录总数,0为不得到记录总数,返回记录集

)

AS

declare @strSql nvarchar(max)

set nocount on;

if(@IsGetCount = 1)

begin

 set @strSql='SELECT COUNT(0) FROM ' + @tab + ' WHERE ' + @strWhere

end

else

begin

 set @strSql=' SELECT * FROM (SELECT ROW_NUMBER()

 OVER(ORDER BY ' + @Sort + ') AS rownum, ' + @strFld + ' FROM ' + @tab + ' where ' + @strWhere + ') AS Dwhere

 WHERE rownum BETWEEN ' + CAST(((@PageIndex-1)*@PageSize + 1) as nvarchar(20)) + ' and ' + cast((@PageIndex*@PageSize) as nvarchar(20))

end

 

print @strSql

exec (@strSql)

 

set nocount off;

로그인 후 복사

webApi 인터페이스( ADO.NET은 부분적으로 캡슐화되어 있습니다. 호출 양식은 다음과 같습니다.)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

/// 测试mui下拉刷新

    /// </summary>

    /// <param name="flag"></param>

    /// <returns></returns>

    [HttpPost]

    public object test(JObject data)

    {

 

      using (var db = new DbBase())

      {

        SqlParameter[] arr = {

                   new SqlParameter{ ParameterName="tab",Value=data["tab"].ToString()},

                   new SqlParameter{ ParameterName="strFld",Value=data["strFld"].ToString()},

                   new SqlParameter{ ParameterName="strWhere",Value=data["strWhere"].ToString()},

                   new SqlParameter{ ParameterName="PageIndex",Value=Convert.ToInt32(data["PageIndex"])},

                   new SqlParameter{ ParameterName="PageSize",Value=Convert.ToInt32(data["PageSize"])},

                   new SqlParameter{ ParameterName="Sort",Value=data["Sort"].ToString()},

                   new SqlParameter{ ParameterName="IsGetCount",Value=Convert.ToInt32(data["IsGetCount"])},

                   };

 

 

      return  RepositoryBase.ExecuteReader(db, "Common_PageList", arr);

 

 

      }

로그인 후 복사

페이지 구현

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

<!DOCTYPE html>

<html>

 

  <head>

    <meta charset="utf-8">

    <title>Hello MUI</title>

    <meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">

    <meta name="apple-mobile-web-app-capable" content="yes">

    <meta name="apple-mobile-web-app-status-bar-style" content="black">

 

    <link rel="stylesheet" href="../css/mui.min.css" rel="external nofollow" >

    <style type="text/css">

       

        

    </style>

  </head>

  <body>

     

      <header class="mui-bar mui-bar-nav">

      <h1 class="mui-title">下拉刷新(单webview模式)</h1>

    </header>

     

    <p id="pullrefresh" class="mui-content mui-scroll-wrapper">

      <p class="mui-scroll">

         

          <ul id="container" class="mui-table-view mui-table-view-chevron"></ul>

       

      </p>

    </p>

     <ul id="temp" class="mui-table-view" style="display: none;">

         <li class="mui-table-view-cell">

           <a class="mui-navigate-right">

             @name

           </a>

         </li>

         

       </ul>

     

    <script src="../js/mui.js" type="text/javascript" charset="utf-8"></script>

    <script>

   

        /**

         数据源分页参数对象

         * */

        var obj={ tab:&#39;SystemUsers&#39;,

              strFld:&#39;code,Username&#39;,

              strWhere:&#39;1=1&#39;,

              PageIndex:1,

              PageSize:10,

              Sort:&#39;Username&#39;,

              IsGetCount:0,

              pageCount:0

            }

         

      //webApi服务器接口 

      var apiUrl="http://192.168.200.114:8123/api/Common/Base/test";

       

       

        /**

         * 定义数据源按什么html方式展示,动态生成html字符串的逻辑

         **/       

        var drawHtml=function(data){

            var html=""

             for (var i=0;i<data.length;i++)

             {

              var temp=document.getElementById("temp").innerHTML; //模板

              html+=temp.toString().replace(&#39;@name&#39;,data[i].Username); //替换参数叠加

            }

              

           return html;

        }

     

      mui.ready(function(){

       /**

         MUI配置项

         * */   

      mui.init({

        pullRefresh: {

          container: &#39;#pullrefresh&#39;,

          down: {

            callback: pulldownRefresh

          }, //END 下拉刷新

          up : { 

             contentrefresh : "正在加载...",//可选,正在加载状态时,上拉加载控件上显示的标题内容

             contentnomore:&#39;没有更多数据了&#39;,//可选,请求完毕若没有更多数据时显示的提醒内容;

             callback :pullupRefresh //必选,刷新函数,根据具体业务来编写,比如通过ajax从服务器获取新数据;

          } //END 上拉加载

        }

      });

              

        //统计:数据总数、分页总数 

        obj.IsGetCount=1;          

        loadData(apiUrl,obj,0);

        

        //初始化列表数据(第一页)

        obj.IsGetCount=0;   

         loadData(apiUrl,obj,0,"down",function(data){          

           //此处实现动态绘制DOM的逻辑,根据数据源自行处理要展示的html方式                    

           return drawHtml(data);

            

         });

         

         

      });

              

      /*

       读取数据源

       url:api地址

       dataObj:数据源分页查询参数对象

       Timeout:指定多少时间后绘制页面DOM展示对象,

               动态生成的元素代码包含在一个setTimeout函数里,

               用  setTimeout,主要对于下拉刷新间隔时间

       loadType:加载方式:up(上拉加载)、down(上拉刷新)   

       drawFunction:回调函数,处理拿到数据源,绘制DOM展示界面的html

                   ,要接收返回的html字符串

       * */

       

      var loadData=function(url,dataObj,Timeout,loadType,drawFunction){

         

        mui.ajax(url, {

                type: "post",

                data:dataObj,

                async:false,

                headers: {&#39;Content-Type&#39;: &#39;application/json&#39;},

                success: function(data) {

                     

                  //统计出数据总数

                  if(dataObj.IsGetCount==1)

                  {                                   

                    obj.pageCount=Math.ceil(parseInt(data[0].Column1)/obj.PageSize) ;                  

                     return;

                  }

           

                  setTimeout(function() {     

                                    

                  //动态绘制出的Dom元素,结合数据展现

                  var html=  drawFunction(data);

                      

                  if(loadType=="up"//上拉加载

                  {

                        if(obj.PageIndex==obj.pageCount)

                        {

                          //参数为true代表没有更多数据了。

                          mui(&#39;#pullrefresh&#39;).pullRefresh().endPullupToRefresh(true);

                        }

                        else

                        {

                          mui(&#39;#pullrefresh&#39;).pullRefresh().endPullupToRefresh();

                        }

                       

                    //将下一页数据追加到容器 

                    document.getElementById("container").innerHTML=document.getElementById("container").innerHTML+html;

                  }

                  else if(loadType=="down") //下拉刷新

                  {

                    // 该方法的作用是关闭“正在刷新”的样式提示,内容区域回滚顶部位置

                    mui(&#39;#pullrefresh&#39;).pullRefresh().endPulldownToRefresh();

                     

                    //将第一页数据覆盖到容器

                    document.getElementById("container").innerHTML=html;

                     

                    //启用上拉加载

                    mui(&#39;#pullrefresh&#39;).pullRefresh().enablePullupToRefresh();

                      

                  }

                   

                }, Timeout);//END setTimeout();

       

                },//END success();

                 

                error: function(xhr, type, errorThrown) {                

                      console.log(type);

                }//END error();

                 

          });//END ajax();

         

      }//END loadData();

             

     /**

       * 下拉刷新具体业务实现

       */

      function pulldownRefresh() { 

          console.log(&#39;重置数据,初始到第一页&#39;);

          obj.PageIndex=1;

   

           loadData(apiUrl,obj,1000,"down",function(data){

           //此处实现动态绘制DOM的逻辑,根据数据源自行处理要展示的html方式                    

           return drawHtml(data);

              

           });

     

    } //END pulldownRefresh() 下拉刷新函数

         

   

      /**

       * 上拉加载具体业务实现

       */

      function pullupRefresh() {

        obj.PageIndex++;//当前页累加,加载下一页的数据      

        console.log("加载第:"+obj.PageIndex+"页");

        console.log("页总数:"+obj.pageCount);

           

       loadData(apiUrl,obj,1000,"up",function(data){

           //此处实现动态绘制DOM的逻辑,根据数据源自行处理要展示的html方式                    

           return drawHtml(data);

            

       });

         

 

      }

       

     

 

    </script>

  </body>

 

</html>

로그인 후 복사

위 내용은 풀업 로딩 및 풀다운 새로 고침의 MUI 구현 공유 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿