├── .babelrc ├── demo ├── site.ico ├── imgs │ ├── 0.jpg │ ├── 1.jpg │ ├── 2.jpg │ ├── 3.jpg │ ├── 4.jpg │ ├── 5.jpg │ ├── 6.jpg │ ├── 7.jpg │ ├── 8.jpg │ ├── 9.jpg │ ├── 10.jpg │ ├── 11.jpg │ ├── 12.jpg │ ├── 13.jpg │ ├── 14.jpg │ ├── 15.jpg │ ├── 16.jpg │ ├── 17.jpg │ ├── 18.jpg │ ├── 19.jpg │ ├── demo1.jpeg │ ├── demo1.png │ ├── demo2.jpeg │ ├── demo3.jpeg │ ├── demo4.jpeg │ ├── error.jpg │ └── loading-spin.svg ├── data │ ├── list2.json │ └── list1.json ├── index.vue ├── index.html ├── index.js ├── app.vue ├── demo1.vue ├── demo3.vue ├── demo2.vue ├── lib │ └── vue-lazyload.js └── demo4.vue ├── src ├── imgs │ ├── arrow.png │ ├── top.png │ ├── no-more.png │ └── no-collection.png ├── index.js └── list-pull-loading.vue ├── postcss.config.js ├── .editorconfig ├── .gitignore ├── package.json ├── index.html ├── config ├── compile.config.js ├── demo.config.js └── build.config.js ├── dist ├── list-pull-loading.css └── list-pull-loading.js └── README.md /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["es2015", "stage-2"] 3 | } 4 | -------------------------------------------------------------------------------- /demo/site.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yujinjin/list-pull-loading/HEAD/demo/site.ico -------------------------------------------------------------------------------- /demo/imgs/0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yujinjin/list-pull-loading/HEAD/demo/imgs/0.jpg -------------------------------------------------------------------------------- /demo/imgs/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yujinjin/list-pull-loading/HEAD/demo/imgs/1.jpg -------------------------------------------------------------------------------- /demo/imgs/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yujinjin/list-pull-loading/HEAD/demo/imgs/2.jpg -------------------------------------------------------------------------------- /demo/imgs/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yujinjin/list-pull-loading/HEAD/demo/imgs/3.jpg -------------------------------------------------------------------------------- /demo/imgs/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yujinjin/list-pull-loading/HEAD/demo/imgs/4.jpg -------------------------------------------------------------------------------- /demo/imgs/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yujinjin/list-pull-loading/HEAD/demo/imgs/5.jpg -------------------------------------------------------------------------------- /demo/imgs/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yujinjin/list-pull-loading/HEAD/demo/imgs/6.jpg -------------------------------------------------------------------------------- /demo/imgs/7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yujinjin/list-pull-loading/HEAD/demo/imgs/7.jpg -------------------------------------------------------------------------------- /demo/imgs/8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yujinjin/list-pull-loading/HEAD/demo/imgs/8.jpg -------------------------------------------------------------------------------- /demo/imgs/9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yujinjin/list-pull-loading/HEAD/demo/imgs/9.jpg -------------------------------------------------------------------------------- /demo/imgs/10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yujinjin/list-pull-loading/HEAD/demo/imgs/10.jpg -------------------------------------------------------------------------------- /demo/imgs/11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yujinjin/list-pull-loading/HEAD/demo/imgs/11.jpg -------------------------------------------------------------------------------- /demo/imgs/12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yujinjin/list-pull-loading/HEAD/demo/imgs/12.jpg -------------------------------------------------------------------------------- /demo/imgs/13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yujinjin/list-pull-loading/HEAD/demo/imgs/13.jpg -------------------------------------------------------------------------------- /demo/imgs/14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yujinjin/list-pull-loading/HEAD/demo/imgs/14.jpg -------------------------------------------------------------------------------- /demo/imgs/15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yujinjin/list-pull-loading/HEAD/demo/imgs/15.jpg -------------------------------------------------------------------------------- /demo/imgs/16.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yujinjin/list-pull-loading/HEAD/demo/imgs/16.jpg -------------------------------------------------------------------------------- /demo/imgs/17.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yujinjin/list-pull-loading/HEAD/demo/imgs/17.jpg -------------------------------------------------------------------------------- /demo/imgs/18.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yujinjin/list-pull-loading/HEAD/demo/imgs/18.jpg -------------------------------------------------------------------------------- /demo/imgs/19.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yujinjin/list-pull-loading/HEAD/demo/imgs/19.jpg -------------------------------------------------------------------------------- /src/imgs/arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yujinjin/list-pull-loading/HEAD/src/imgs/arrow.png -------------------------------------------------------------------------------- /src/imgs/top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yujinjin/list-pull-loading/HEAD/src/imgs/top.png -------------------------------------------------------------------------------- /demo/imgs/demo1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yujinjin/list-pull-loading/HEAD/demo/imgs/demo1.jpeg -------------------------------------------------------------------------------- /demo/imgs/demo1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yujinjin/list-pull-loading/HEAD/demo/imgs/demo1.png -------------------------------------------------------------------------------- /demo/imgs/demo2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yujinjin/list-pull-loading/HEAD/demo/imgs/demo2.jpeg -------------------------------------------------------------------------------- /demo/imgs/demo3.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yujinjin/list-pull-loading/HEAD/demo/imgs/demo3.jpeg -------------------------------------------------------------------------------- /demo/imgs/demo4.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yujinjin/list-pull-loading/HEAD/demo/imgs/demo4.jpeg -------------------------------------------------------------------------------- /demo/imgs/error.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yujinjin/list-pull-loading/HEAD/demo/imgs/error.jpg -------------------------------------------------------------------------------- /src/imgs/no-more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yujinjin/list-pull-loading/HEAD/src/imgs/no-more.png -------------------------------------------------------------------------------- /src/imgs/no-collection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yujinjin/list-pull-loading/HEAD/src/imgs/no-collection.png -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | //兼容最新的5个浏览器版本 2 | 3 | module.exports = { 4 | plugins: { 5 | 'autoprefixer': { 6 | browsers: 'last 5 version' 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | # 对所有文件生效 4 | [*] 5 | charset = utf-8 6 | indent_style = tab 7 | indent_size = 4 8 | end_of_line = lf 9 | insert_final_newline = true 10 | trim_trailing_whitespace = true 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | build/ 3 | npm-debug.log 4 | .project 5 | .idea/JK724.Mobile.iml 6 | .idea/jsLibraryMappings.xml 7 | .idea/misc.xml 8 | .idea/modules.xml 9 | .idea/workspace.xml 10 | .idea/vcs.xml 11 | .idea/watcherTasks.xml 12 | /.bat 13 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import listPullLoading from './list-pull-loading.vue'; 2 | 3 | var install = function(Vue, options){ 4 | if (options) { 5 | listLoading.props.globalOptions.default = function(){ 6 | return options; 7 | } 8 | } 9 | Vue.component("list-pull-loading", listPullLoading); 10 | } 11 | 12 | export { install, listPullLoading }; 13 | export default { install, listPullLoading }; 14 | -------------------------------------------------------------------------------- /demo/imgs/loading-spin.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /demo/data/list2.json: -------------------------------------------------------------------------------- 1 | { 2 | "result": [ 3 | { 4 | "name": "健康方案", 5 | "id": "9b03ec5f-c985-4943-9a97-dc1c11a79c32" 6 | }, { 7 | "name": "健康故事", 8 | "id": "ada8dc25-f14a-4fd6-87b1-d61835de353d" 9 | }, { 10 | "name": "创始人说", 11 | "id": "da89d623-9ef0-4209-a18a-62ec033c24dd" 12 | }, { 13 | "name": "健康资讯", 14 | "id": "068766b0-462c-4fa2-8167-156837335403" 15 | }, { 16 | "name": "荣耀之旅", 17 | "id": "a0876344-f230-42e6-87e6-a854ef8a9bb7" 18 | }, { 19 | "name": "达人分享", 20 | "id": "ca174e3f-be22-43f5-8ce7-1fe34ea6fb69" 21 | } 22 | ], 23 | "targetUrl": null, 24 | "success": true, 25 | "error": null, 26 | "unAuthorizedRequest": false, 27 | "__abp": true 28 | } -------------------------------------------------------------------------------- /demo/index.vue: -------------------------------------------------------------------------------- 1 | 39 | 40 | 43 | 44 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "list-pull-loading", 3 | "version": "1.1.2", 4 | "description": "'list-pull-loading'是移动端上拉加载、下拉刷新的一个vue组件,使用了iscroll.js作为第三方插件。", 5 | "main": "dist/list-pull-loading.js", 6 | "unpkg": "dist/vue-lazyload.js", 7 | "repository": { 8 | "type": "git", 9 | "url": "https://github.com/yujinjin/list-pull-loading.git" 10 | }, 11 | "scripts": { 12 | "demo": "webpack --config config/demo.config.js", 13 | "build": "webpack --config config/build.config.js", 14 | "compile": "set NODE_ENV=production&&webpack --config config/compile.config.js" 15 | }, 16 | "keywords": [ 17 | "vue", 18 | "iscroll", 19 | "list-pull-loading", 20 | "list-loading" 21 | ], 22 | "author": "jinyu ", 23 | "license": "MIT", 24 | "bugs": { 25 | "url": "https://github.com/yujinjin/list-pull-loading/issues" 26 | }, 27 | "dependencies": { 28 | "vue": "^2.6.11", 29 | "vuex": "^3.4.0", 30 | "vue-router": "^3.1.6", 31 | "iscroll": "^5.2" 32 | }, 33 | "devDependencies": { 34 | "vue-loader": "13.5.0", 35 | "vue-template-compiler": "^2.6.11", 36 | "postcss-loader": "^2.0.8", 37 | "babel-plugin-syntax-jsx": "^6.18.0", 38 | "babel-plugin-transform-vue-jsx": "^3.5.0", 39 | "babel-helper-vue-jsx-merge-props": "^2.0.2", 40 | "autoprefixer": "^7.2.1", 41 | "babel-core": "^6.26.0", 42 | "babel-eslint": "^8.0.3", 43 | "babel-loader": "^7.1.2", 44 | "babel-plugin-transform-runtime": "^6.23.0", 45 | "babel-preset-es2015": "^6.24.1", 46 | "babel-preset-stage-2": "^6.24.1", 47 | "babel-register": "^6.26.0", 48 | "babel-polyfill": "^6.26.0", 49 | "cross-env": "^1.0.6", 50 | "css-loader": "^0.28.7", 51 | "less": "^2.7.1", 52 | "less-loader": "^4.0.0", 53 | "node-sass": "^4.7.2", 54 | "sass-loader": "^6.0.6", 55 | "file-loader": "^1.1.5", 56 | "html-loader": "^0.5.1", 57 | "html-webpack-plugin": "^2.30.1", 58 | "jshint": "^2.9.4", 59 | "jshint-loader": "^0.8.4", 60 | "style-loader": "^0.19.0", 61 | "url-loader": "^0.6.2", 62 | "opn": "^4.0.2", 63 | "extract-text-webpack-plugin": "^3.0.2", 64 | "webpack": "^3.9.1", 65 | "webpack-dev-server": "^2.9.5", 66 | "webpack-require-http": "^0.4.0", 67 | "clean-webpack-plugin": "^0.1.18", 68 | "friendly-errors-webpack-plugin": "^1.6.1" 69 | }, 70 | "engines": { 71 | "node": ">=5.0.0", 72 | "npm": ">=3.3.6" 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /demo/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 下拉刷新上拉加载组件实例 24 | 94 | 95 | 96 |
97 | 98 | 99 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 移动客户端 24 | 85 | 86 | 87 |
88 | 89 | 90 | -------------------------------------------------------------------------------- /demo/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 作者:yujinjin9@126.com 3 | * 时间:2018-01-29 4 | */ 5 | import babelPolyfill from 'babel-polyfill' 6 | import Vue from 'vue' 7 | import VueRouter from 'vue-router' 8 | import vueApp from "./app" 9 | import Vuex from 'vuex' 10 | import ListPullLoading from '../dist/list-pull-loading' 11 | import "../dist/list-pull-loading.css" 12 | import vueLazyload from './lib/vue-lazyload' 13 | 14 | Vue.use(VueRouter); 15 | Vue.use(ListPullLoading); 16 | Vue.use(vueLazyload, { 17 | preLoad: 1.3, 18 | error: require("./imgs/error.jpg"), 19 | loading: require("./imgs/loading-spin.svg"), 20 | attempt: 1, //出错时只尝试加载次数 21 | filter: { 22 | progressive(listener, options) { 23 | listener.el.setAttribute('lazy-progressive', 'true'); 24 | }, 25 | webp(listener, options) { 26 | if(!options.supportWebp) return 27 | } 28 | } 29 | }); 30 | Vue.use(Vuex); 31 | // 实例化Vuex 32 | var store = new Vuex.Store({ 33 | state: { 34 | direction: null, //going:前进|backing后退|replace 35 | navbarTitle: "", //app的导航页标题 36 | locationInfo: { 37 | demo4CacheData: null, // demo4的数据缓存 38 | } 39 | }, 40 | mutations: { 41 | //修改路由的方向 42 | updateDirection(state, direction = "going") { 43 | state.direction = direction; 44 | }, 45 | //修改导航标题 46 | updateNavbarTitle(state, navbarTitle) { 47 | state.navbarTitle = navbarTitle; 48 | }, 49 | //修改app临时数据 50 | updateLocationInfo(state, {key, value}) { 51 | state.locationInfo[key] = value; 52 | } 53 | }, 54 | actions: { 55 | updateDirection({commit}, direction) { 56 | commit("updateDirection", direction); 57 | }, 58 | updateNavbarTitle({commit}, navbarTitle) { 59 | commit("updateNavbarTitle", navbarTitle); 60 | }, 61 | updateLocationInfo({commit}, {key, value}) { 62 | commit("updateLocationInfo", {key, value}); 63 | } 64 | } 65 | }); 66 | // 实例化路由 67 | var router = new VueRouter({ 68 | routes: [{ 69 | path: '/', 70 | name: "index", 71 | meta: {title: "主页"}, 72 | component: require('./index.vue').default 73 | }, { 74 | path: '/demo1', 75 | name: "demo1", 76 | meta: {title: "demo1"}, 77 | component: require('./demo1.vue').default 78 | }, { 79 | path: '/demo2', 80 | name: "demo2", 81 | meta: {title: "demo2"}, 82 | component: require('./demo2.vue').default 83 | }, { 84 | path: '/demo3', 85 | name: "demo3", 86 | meta: {title: "demo3"}, 87 | component: require('./demo3.vue').default 88 | }, { 89 | path: '/demo4', 90 | name: "demo4", 91 | meta: {title: "demo4"}, 92 | component: require('./demo4.vue').default 93 | }], 94 | mode: 'hash', 95 | base: "/", 96 | linkActiveClass: "router-link-active" 97 | }); 98 | router.beforeEach(function(to, from, next) { 99 | if(store.state.direction) { 100 | store.dispatch("updateDirection", store.state.direction); 101 | } else { 102 | // 当前没有路由的方向就认为是返回,因为移动端是没有前进按钮的(这个判断也是无奈,如果是手机浏览器就无法解决) 103 | store.dispatch("updateDirection", "backing"); 104 | } 105 | store.dispatch("updateNavbarTitle", to.meta.title); 106 | next(); 107 | store.dispatch("updateDirection", null); 108 | }); 109 | router.afterEach(function(router, store){ 110 | let title = "下拉刷新上拉加载组件实例"; 111 | if(router.meta && router.meta.title) { 112 | document.title = title + "-" + title; 113 | } 114 | }); 115 | let VueApp = Vue.extend(vueApp); 116 | window.store = store; 117 | new VueApp({ router, name: "app", store }).$mount('#app'); 118 | -------------------------------------------------------------------------------- /demo/app.vue: -------------------------------------------------------------------------------- 1 | 13 | 35 | -------------------------------------------------------------------------------- /demo/demo1.vue: -------------------------------------------------------------------------------- 1 | 27 | 28 | 79 | 80 | -------------------------------------------------------------------------------- /config/compile.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path'), 2 | webpack = require('webpack'), 3 | ExtractTextPlugin = require("extract-text-webpack-plugin"), 4 | HtmlWebpackPlugin = require("html-webpack-plugin"), 5 | CleanWebpackPlugin = require('clean-webpack-plugin'); 6 | const config = { 7 | entry: { 8 | index: "./src/index.js" 9 | }, 10 | output: { 11 | path: path.resolve(__dirname, '../dist'), 12 | publicPath: "/", 13 | filename: "list-pull-loading.js", 14 | library: 'ListPullLoading', 15 | libraryTarget: 'umd' 16 | }, 17 | externals: { 18 | iscroll: { 19 | root: 'IScroll', 20 | commonjs: 'iscroll', 21 | commonjs2: 'iscroll', 22 | amd: 'iscroll' 23 | } 24 | }, 25 | module: { 26 | rules: [{ 27 | test: /\.html$/, 28 | use: [{ 29 | loader: 'html-loader', 30 | options: { 31 | attrs: ['img:src', 'link:href'] 32 | } 33 | }] 34 | }, { 35 | test: /\.js(x)*$/, 36 | exclude: /^node_modules$/, 37 | use: ['babel-loader'] 38 | }, { 39 | test: /\.vue$/, 40 | use: { 41 | loader: "vue-loader", 42 | options: { 43 | extractCSS: true, 44 | loaders: { 45 | css: ExtractTextPlugin.extract({ 46 | fallback: 'vue-style-loader', 47 | use: [ 48 | { loader: 'css-loader', options: { minimize: true } }, 49 | { loader: 'postcss-loader', options: { sourceMap: true } } 50 | ], 51 | publicPath: "./" 52 | }), 53 | less: ExtractTextPlugin.extract({ 54 | fallback: 'vue-style-loader', 55 | use: [ 56 | { loader: 'css-loader', options: { minimize: true } }, 57 | { loader: 'postcss-loader', options: { sourceMap: true } }, 58 | "less-loader" 59 | ], 60 | publicPath: "./" 61 | }), 62 | scss: ExtractTextPlugin.extract({ 63 | fallback: 'vue-style-loader', 64 | use: [ 65 | { loader: 'css-loader', options: { minimize: true } }, 66 | { loader: 'postcss-loader', options: { sourceMap: true } }, 67 | 'sass-loader' 68 | ], 69 | publicPath: "./" 70 | }) 71 | } 72 | } 73 | } 74 | }, { 75 | test: /\.css$/, 76 | exclude: /^node_modules$/, 77 | use: ExtractTextPlugin.extract({ 78 | fallback: "style-loader", 79 | use: [ 80 | { loader: 'css-loader', options: { minimize: true } }, 81 | { loader: 'postcss-loader', options: { sourceMap: true } } 82 | ], 83 | publicPath: "./" 84 | }) 85 | }, { 86 | test: /\.less/, 87 | exclude: /^node_modules$/, 88 | use: ExtractTextPlugin.extract({ 89 | fallback: 'style-loader', 90 | use: [ 91 | { loader: 'css-loader', options: { minimize: true } }, 92 | { loader: 'postcss-loader', options: { sourceMap: true } }, 93 | "less-loader" 94 | ], 95 | publicPath: "./" 96 | }) 97 | }, { 98 | test: /\.scss/, 99 | exclude: /^node_modules$/, 100 | use: ExtractTextPlugin.extract({ 101 | fallback: 'style-loader', 102 | use: [ 103 | { loader: 'css-loader', options: { minimize: true } }, 104 | { loader: 'postcss-loader', options: { sourceMap: true } }, 105 | 'sass-loader' 106 | ], 107 | publicPath: "./" 108 | }) 109 | }, { 110 | test: /\.(png|jpe?g|gif|svg|ico)(\?.*)?$/, 111 | use: [{ 112 | loader: "url-loader", 113 | options: { 114 | limit: 10000, 115 | name: 'imgs/name.[ext]' 116 | } 117 | }] 118 | }, { 119 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, 120 | use: [{ 121 | loader: "url-loader", 122 | options: { 123 | limit: 5000, 124 | name: 'fonts/name.[ext]' 125 | } 126 | }] 127 | }] 128 | }, 129 | devtool: false, 130 | performance: { 131 | hints: false 132 | }, 133 | plugins: [ 134 | new CleanWebpackPlugin(['dist/*.*', 'build/*.*'], {root: path.resolve(__dirname, '../'), verbose: true, dry: false}), 135 | new ExtractTextPlugin({ 136 | filename: "list-pull-loading.css", 137 | allChunks: true 138 | }), //必须要allChunks设置为true,不然webpack编译会报错 139 | //显示构建进度 140 | new webpack.ProgressPlugin(), 141 | // 开启 Scope Hoisting 142 | new webpack.optimize.ModuleConcatenationPlugin(), 143 | new webpack.optimize.UglifyJsPlugin({ 144 | compress: { 145 | warnings: false, 146 | screw_ie8: true, 147 | conditionals: true, 148 | unused: true, 149 | comparisons: true, 150 | sequences: true, 151 | dead_code: true, 152 | evaluate: true, 153 | if_return: true, 154 | join_vars: true 155 | }, 156 | output: { 157 | comments: false 158 | }, 159 | sourceMap: false 160 | }) 161 | ], 162 | resolve: { 163 | extensions: ['.js', '.vue', '.jsx', '.less', '.scss', '.css'], //后缀名自动补全 164 | alias: { 165 | iscroll: 'iscroll/build/iscroll-probe' 166 | } 167 | } 168 | } 169 | module.exports = config; -------------------------------------------------------------------------------- /config/demo.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path'), 2 | webpack = require('webpack'), 3 | // ROOT_PATH = path.resolve(__dirname) + "/", 4 | // OUT_PATH = path.resolve(ROOT_PATH, 'build') + "/", 5 | // SERVER_PATH = process.env.SERVER || "./build/", // 服务路径 6 | ExtractTextPlugin = require("extract-text-webpack-plugin"), 7 | HtmlWebpackPlugin = require("html-webpack-plugin"), 8 | ip = require('ip').address(), 9 | port = "8088"; 10 | const config = { 11 | entry: { 12 | index: "./demo/index.js", //[ROOT_PATH + "\\js\\entrance.js"], 13 | // 打包第三方库作为公共包 14 | commons: ['vue'] 15 | }, 16 | output: { 17 | path: path.resolve(__dirname, '../demo/build'), 18 | publicPath: "/", 19 | filename: "build.js" 20 | }, 21 | externals: [], 22 | module: { 23 | rules: [{ 24 | test: /\.html$/, 25 | use: [{ 26 | loader: 'html-loader', 27 | options: { 28 | attrs: ['img:src', 'link:href'] 29 | } 30 | }] 31 | }, { 32 | test: /\.js(x)*$/, 33 | exclude: /^node_modules$/, 34 | use: ['babel-loader'] 35 | }, { 36 | test: /\.vue$/, 37 | exclude: /^node_modules$/, 38 | use: { 39 | loader: "vue-loader", 40 | options: { 41 | extractCSS: true, 42 | loaders: { 43 | css: ExtractTextPlugin.extract({ 44 | fallback: 'vue-style-loader', 45 | use: [{ 46 | loader: 'css-loader' 47 | }, 48 | { 49 | loader: 'postcss-loader', 50 | options: { 51 | sourceMap: true 52 | } 53 | } 54 | ], 55 | publicPath: "./" 56 | }), 57 | less: ExtractTextPlugin.extract({ 58 | fallback: 'vue-style-loader', 59 | use: [{ 60 | loader: 'css-loader' 61 | }, 62 | { 63 | loader: 'postcss-loader', 64 | options: { 65 | sourceMap: true 66 | } 67 | }, 68 | "less-loader" 69 | ], 70 | publicPath: "./" 71 | }), 72 | scss: ExtractTextPlugin.extract({ 73 | fallback: 'vue-style-loader', 74 | use: [{ 75 | loader: 'css-loader' 76 | }, 77 | { 78 | loader: 'postcss-loader', 79 | options: { 80 | sourceMap: true 81 | } 82 | }, 83 | 'sass-loader' 84 | ], 85 | publicPath: "./" 86 | }), 87 | } 88 | } 89 | } 90 | }, { 91 | test: /\.css$/, 92 | exclude: /^node_modules$/, 93 | use: ExtractTextPlugin.extract({ 94 | fallback: "style-loader", 95 | use: [{ 96 | loader: 'css-loader' 97 | }, 98 | { 99 | loader: 'postcss-loader', 100 | options: { 101 | sourceMap: true 102 | } 103 | } 104 | ], 105 | publicPath: "./" 106 | }) 107 | }, { 108 | test: /\.less/, 109 | exclude: /^node_modules$/, 110 | use: ExtractTextPlugin.extract({ 111 | fallback: 'style-loader', 112 | use: [{ 113 | loader: 'css-loader' 114 | }, 115 | { 116 | loader: 'postcss-loader', 117 | options: { 118 | sourceMap: true 119 | } 120 | }, 121 | "less-loader" 122 | ], 123 | publicPath: "./" 124 | }) 125 | }, { 126 | test: /\.scss/, 127 | exclude: /^node_modules$/, 128 | use: ExtractTextPlugin.extract({ 129 | fallback: 'style-loader', 130 | use: [{ 131 | loader: 'css-loader' 132 | }, 133 | { 134 | loader: 'postcss-loader', 135 | options: { 136 | sourceMap: true 137 | } 138 | }, 139 | 'sass-loader' 140 | ], 141 | publicPath: "./" 142 | }) 143 | }, { 144 | test: /\.(png|jpe?g|gif|svg|ico)(\?.*)?$/, 145 | use: [{ 146 | loader: "url-loader", 147 | options: { 148 | limit: 10000, 149 | name: 'imgs/[name].[hash:7].[ext]', 150 | publicPath: "./" 151 | } 152 | }] 153 | }, { 154 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, 155 | use: [{ 156 | loader: "url-loader", 157 | options: { 158 | limit: 5000, 159 | name: 'fonts/[name].[hash:7].[ext]' 160 | } 161 | }] 162 | }] 163 | }, 164 | plugins: [ 165 | new ExtractTextPlugin({ 166 | filename: "style.[name].css", 167 | allChunks: true 168 | }), //必须要allChunks设置为true,不然webpack编译会报错 169 | new HtmlWebpackPlugin({ 170 | filename: "index.html", //生成的html存放路径,相对于 path 171 | template: './demo/index.html', //html模板路径 172 | favicon: "./demo/site.ico", 173 | chunks: ['commons', 'index'], 174 | inject: true, //允许插件修改哪些内容,包括head与body 175 | minify: { //压缩HTML文件 176 | removeComments: true, //移除HTML中的注释 177 | collapseWhitespace: false, //删除空白符与换行符 178 | collapseInlineTagWhitespace: true, 179 | removeRedundantAttributes: true 180 | } 181 | }), 182 | /* 183 | 使用CommonsChunkPlugin插件来处理重复代码 184 | 因为vendor.js和index.js都引用了spa-history, 如果不处理的话, 两个文件里都会有spa-history包的代码, 185 | 我们用CommonsChunkPlugin插件来使共同引用的文件只打包进vendor.js 186 | */ 187 | new webpack.optimize.CommonsChunkPlugin({ 188 | name: "commons", 189 | filename: "common.js", 190 | chunks: ['index'], //提取哪些模块共有的部分 191 | minChunks: 1 192 | // minChunks (module) { 193 | // return module.context && module.context.indexOf('node_modules') >= 0; 194 | // } 195 | }), 196 | // 开启 Scope Hoisting 197 | new webpack.optimize.ModuleConcatenationPlugin() 198 | ], 199 | resolve: { 200 | extensions: ['.js', '.vue', '.jsx', '.less', '.scss', '.css'], //后缀名自动补全 201 | alias: { 202 | iscroll: 'iscroll/build/iscroll-probe' 203 | } 204 | } 205 | } 206 | config.devtool = '#cheap-module-eval-source-map'; 207 | config.performance = { 208 | hints: "warning" 209 | }; 210 | config.plugins = (config.plugins || []).concat([ 211 | new(require('friendly-errors-webpack-plugin')), 212 | new webpack.HotModuleReplacementPlugin(), 213 | new webpack.NoEmitOnErrorsPlugin() 214 | ]); 215 | // 热替换 216 | Object.keys(config.entry).forEach(function (name) { 217 | config.entry[name] = [ 218 | `webpack-dev-server/client?http://${ip}:${port}/`, 219 | "webpack/hot/dev-server" 220 | ].concat(config.entry[name]) 221 | }); 222 | var opn = require('opn'); 223 | var url = `http://${ip}:${port}/`; 224 | var webpackDevServer = require('webpack-dev-server'); 225 | var compiler = webpack(config); 226 | var server = new webpackDevServer(compiler, { 227 | //hot: true, 228 | quiet: true, 229 | historyApiFallback: true, //配置为true, 当访问的文件不存在时, 返回根目录下的index.html文件 230 | noInfo: true, 231 | disableHostCheck: true, // 禁用服务检查 232 | publicPath: "/" //TODO:必须是output中的publicPath保持一致 233 | }); 234 | server.listen(port, ip); 235 | // 打包完毕后启动浏览器 236 | server.middleware.waitUntilValid(function () { 237 | console.log(`> Listening at ${url}`); 238 | opn(`${url}`); 239 | }); 240 | module.exports = config; 241 | -------------------------------------------------------------------------------- /config/build.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path'), 2 | webpack = require('webpack'), 3 | // ROOT_PATH = path.resolve(__dirname) + "/", 4 | // OUT_PATH = path.resolve(ROOT_PATH, 'build') + "/", 5 | // SERVER_PATH = process.env.SERVER || "./build/", // 服务路径 6 | ExtractTextPlugin = require("extract-text-webpack-plugin"), 7 | HtmlWebpackPlugin = require("html-webpack-plugin"), 8 | ip = require('ip').address(), 9 | CleanWebpackPlugin = require('clean-webpack-plugin'); 10 | port = "8088"; 11 | const config = { 12 | entry: { 13 | index: "./demo/index.js", //[ROOT_PATH + "\\js\\entrance.js"], 14 | // 打包第三方库作为公共包 15 | commons: ['vue'] 16 | }, 17 | output: { 18 | path: path.resolve(__dirname, '../demo/build'), 19 | // publicPath: "https://yujinjin.github.io/list-pull-loading/", 20 | publicPath: "./", 21 | filename: "build.[hash].js" 22 | }, 23 | externals: [], 24 | module: { 25 | rules: [{ 26 | test: /\.html$/, 27 | use: [{ 28 | loader: 'html-loader', 29 | options: { 30 | attrs: ['img:src', 'link:href'] 31 | } 32 | }] 33 | }, { 34 | test: /\.js(x)*$/, 35 | exclude: /^node_modules$/, 36 | use: ['babel-loader'] 37 | }, { 38 | test: /\.vue$/, 39 | exclude: /^node_modules$/, 40 | use: { 41 | loader: "vue-loader", 42 | options: { 43 | extractCSS: true, 44 | loaders: { 45 | css: ExtractTextPlugin.extract({ 46 | fallback: 'vue-style-loader', 47 | use: [ 48 | { loader: 'css-loader'}, 49 | { loader: 'postcss-loader', options: { sourceMap: true } } 50 | ], 51 | publicPath: "./" 52 | }), 53 | less: ExtractTextPlugin.extract({ 54 | fallback: 'vue-style-loader', 55 | use: [ 56 | { loader: 'css-loader'}, 57 | { loader: 'postcss-loader', options: { sourceMap: true } }, 58 | "less-loader" 59 | ], 60 | publicPath: "./" 61 | }), 62 | scss: ExtractTextPlugin.extract({ 63 | fallback: 'vue-style-loader', 64 | use: [ 65 | { loader: 'css-loader'}, 66 | { loader: 'postcss-loader', options: { sourceMap: true } }, 67 | 'sass-loader' 68 | ], 69 | publicPath: "./" 70 | }), 71 | } 72 | } 73 | } 74 | }, { 75 | test: /\.css$/, 76 | exclude: /^node_modules$/, 77 | use: ExtractTextPlugin.extract({ 78 | fallback: "style-loader", 79 | use: [ 80 | { loader: 'css-loader'}, 81 | { loader: 'postcss-loader', options: { sourceMap: true } } 82 | ], 83 | publicPath: "./" 84 | }) 85 | }, { 86 | test: /\.less/, 87 | exclude: /^node_modules$/, 88 | use: ExtractTextPlugin.extract({ 89 | fallback: 'style-loader', 90 | use: [ 91 | { loader: 'css-loader'}, 92 | { loader: 'postcss-loader', options: { sourceMap: true } }, 93 | "less-loader" 94 | ], 95 | publicPath: "./" 96 | }) 97 | }, { 98 | test: /\.scss/, 99 | exclude: /^node_modules$/, 100 | use: ExtractTextPlugin.extract({ 101 | fallback: 'style-loader', 102 | use: [ 103 | { loader: 'css-loader'}, 104 | { loader: 'postcss-loader', options: { sourceMap: true } }, 105 | 'sass-loader' 106 | ], 107 | publicPath: "./" 108 | }) 109 | }, { 110 | test: /\.(png|jpe?g|gif|svg|ico)(\?.*)?$/, 111 | use: [{ 112 | loader: "url-loader", 113 | options: { 114 | limit: 10000, 115 | name: 'imgs/[name].[hash:7].[ext]', 116 | publicPath: "./" 117 | } 118 | }] 119 | }, { 120 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, 121 | use: [{ 122 | loader: "url-loader", 123 | options: { 124 | limit: 5000, 125 | name: 'fonts/[name].[hash:7].[ext]' 126 | } 127 | }] 128 | }] 129 | }, 130 | plugins: [ 131 | new CleanWebpackPlugin(['demo/build/*'], {root: path.resolve(__dirname, '../'), verbose: true, dry: false}), 132 | new ExtractTextPlugin({ 133 | filename: "style.[name].[hash].css", 134 | allChunks: true 135 | }), //必须要allChunks设置为true,不然webpack编译会报错 136 | new HtmlWebpackPlugin({ 137 | filename: "index.html", //生成的html存放路径,相对于 path 138 | template: './demo/index.html', //html模板路径 139 | favicon: "./demo/site.ico", 140 | chunks: ['commons', 'index'], 141 | inject: true, //允许插件修改哪些内容,包括head与body 142 | minify: { //压缩HTML文件 143 | removeComments: true, //移除HTML中的注释 144 | collapseWhitespace: false, //删除空白符与换行符 145 | collapseInlineTagWhitespace: true, 146 | removeRedundantAttributes: true 147 | } 148 | }), 149 | /* 150 | 使用CommonsChunkPlugin插件来处理重复代码 151 | 因为vendor.js和index.js都引用了spa-history, 如果不处理的话, 两个文件里都会有spa-history包的代码, 152 | 我们用CommonsChunkPlugin插件来使共同引用的文件只打包进vendor.js 153 | */ 154 | new webpack.optimize.CommonsChunkPlugin({ 155 | name: "commons", 156 | filename: "common.[hash].js", 157 | chunks: ['index'], //提取哪些模块共有的部分 158 | minChunks: 1 159 | // minChunks (module) { 160 | // return module.context && module.context.indexOf('node_modules') >= 0; 161 | // } 162 | }), 163 | // 开启 Scope Hoisting 164 | new webpack.optimize.ModuleConcatenationPlugin(), 165 | //显示构建进度 166 | new webpack.ProgressPlugin(), 167 | new webpack.optimize.UglifyJsPlugin({ 168 | compress: { 169 | warnings: false, 170 | screw_ie8: true, 171 | conditionals: true, 172 | unused: true, 173 | comparisons: true, 174 | sequences: true, 175 | dead_code: true, 176 | evaluate: true, 177 | if_return: true, 178 | join_vars: true 179 | }, 180 | output: { 181 | comments: false 182 | }, 183 | sourceMap: false 184 | }) 185 | ], 186 | resolve: { 187 | extensions: ['.js', '.vue', '.jsx', '.less', '.scss', '.css'], //后缀名自动补全 188 | alias: { 189 | iscroll: 'iscroll/build/iscroll-probe' 190 | } 191 | } 192 | } 193 | module.exports = config; -------------------------------------------------------------------------------- /dist/list-pull-loading.css: -------------------------------------------------------------------------------- 1 | .list-pull-loading{width:100%;height:100%;overflow:hidden;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.list-pull-loading .loading-mask{height:100%;width:100%;position:absolute;opacity:0;z-index:99;top:0;left:0}.list-pull-loading .list-pull-loading-box{position:relative;-webkit-box-flex:1;-ms-flex:1;flex:1;height:100%;-ms-touch-action:none;touch-action:none}.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller{min-height:auto;position:absolute;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;-ms-text-size-adjust:none;-o-text-size-adjust:none;text-size-adjust:none;width:100%}.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .tips-text{display:inline-block;font-size:12px;color:gray;vertical-align:middle}.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .pull-down-tips,.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .pull-up-tips{height:60px;width:100%;overflow:hidden;text-align:center;font-size:12px}.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .pull-down-tips.down-margin,.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .pull-up-tips.down-margin{margin-top:-60px}.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .pull-down-tips.loading,.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .pull-up-tips.loading{margin-top:0;position:relative}.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .pull-down-tips .tips-content,.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .pull-up-tips .tips-content{left:0;bottom:0;width:100%;min-height:30px;padding:5px}.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .pull-down-tips .tips-content .unload,.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .pull-up-tips .tips-content .unload{height:30px;line-height:30px;width:100%}.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .pull-down-tips .tips-content .unload .arrow,.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .pull-up-tips .tips-content .unload .arrow{display:inline-block;width:20px;height:20px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAANlBMVEUAAACJiYmKioqJiYmPj4+KioqJiYmJiYmLi4uHh4eKioqJiYmJiYmKioqKioqKioqKioqKiooKvZC4AAAAEXRSTlMAgMDwEDDQoEAgsHBQz+CQYPs2rIYAAABpSURBVDjL7dNLDoAgDEXRQssfVPa/WSVqNKFCSBxyxydpJw9GI9UBQk4wwS9ArG8Qa6dyfIDCAFUbqhtQMsBkEl3AaOIAaX+CgA7YHIoCbPmGz2YrZGGfBTTyONTI57xQC5DGzjidhcF2XLgCFJGtYqIAAAAASUVORK5CYII=);background-size:contain;vertical-align:middle;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s;margin:0 0 3px}.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .pull-down-tips .tips-content .unload .arrow-normal,.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .pull-up-tips .tips-content .unload .arrow-normal{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);-webkit-transform:-webkit-rotate(0deg);transform:-webkit-rotate(0deg);transform:-moz-rotate(0deg);transform:-o-rotate(0deg);-ms-transform:-ms-rotate(0deg);transform:-ms-rotate(0deg)}.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .pull-down-tips .tips-content .unload .arrow-rotate,.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .pull-up-tips .tips-content .unload .arrow-rotate{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);-webkit-transform:-webkit-rotate(180deg);transform:-webkit-rotate(180deg);transform:-moz-rotate(180deg);transform:-o-rotate(180deg);-ms-transform:-ms-rotate(180deg);transform:-ms-rotate(180deg)}.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .pull-down-tips .tips-content .onload,.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .pull-up-tips .tips-content .onload{height:30px;line-height:30px;width:100%}.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .pull-down-tips .tips-content .onload .progress,.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .pull-up-tips .tips-content .onload .progress{display:inline-block;width:20px;height:20px;border:none;margin:auto;background-size:contain;margin-right:8px;stroke:#aaa;fill:#fff}.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .pull-down-tips .tips-content .onload .progress svg,.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .pull-up-tips .tips-content .onload .progress svg{margin:5px;display:block;position:relative;width:100%;height:100%}.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .pull-down-tips .tips-content .last-time-text,.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .pull-up-tips .tips-content .last-time-text{height:20px;line-height:20px}.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .pull-up-tips{position:relative}.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .pull-up-tips .no-more,.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .pull-up-tips .onload,.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .pull-up-tips .unload{position:absolute;bottom:5px}.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .pull-up-tips .no-more{height:30px;line-height:30px;width:100%}.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .pull-up-tips .no-more .icon{display:inline-block;width:60px;height:30px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGMAAABACAYAAAAOA8kNAAAEh0lEQVR4nO1c25HqMAx1CVtCSqAESqAESkgJdMCn5ugnJaQESkgJlJAScj+QuSYLiS3Ha2fwmdHMsuQhcqyXbcWYCADombmLuUbFRgAwAZhy61FhKhnZwcydJeGN9Ln1+yoQ0QXAKGJJGAGMNX5kRHVTBWErMojoCGCYWVsu6YnovMHj+VsAuMbGCYlBI4AeQAvglEuI6GxjIhFdNnpM+4A8hAnAKbcuLsRSJyI65tblzyDWUGQGBmAITUiIqBHr7onoQkRNIvW2B4A7gGtuPd5BssYh4PhGfs9LDNpN/BHl29x6vIOMcG8yJAGZmPlGRGeJp5aQJqGq/ui67oeZD0R0nguAOzN3775LIMeu63589Q4hQ6xiAjC693AK5PwDzklZJ7GCnGJdh5dbDCHDSUSG2f/bkHsmg4yWkZm7kBGZEjI47j5Jg8JN2RrpZMzDIzgDMW+2WGqmZF0KMx+WjlOQ0TrW95wuYuZbvNaRkBFYVP1gISN20Y+HkuGcYy1E7xWI6CgBp4/1cWKiq6MvF+CxKKYhw4KIGrVrlpx6PkczalOybydDDScTGIWUEzPfELE+sUaGE9y0EuX+iiXDWoU7MWYfJoBRc00fywDQypSBRhqNXs69yyTDmaU8z5S5Q1k9VjelhFTCE4DBBh4nTVMpU8lQYlac2BzZ/q3yzZWMCMj8kV3kGSWAq4NkJWMjbDF14UMGMx+2Fl/dd0PGFvBMbVOsX48+hFQyPhy3tfjoV8koCJWMglDJKAiVjIJQyZh9T0QXZu7WJMUqYSXj9/dXyGrgkqTYWVHJKAiVjIJQySgIlYyAc4noKNIkUK8YMgC0yRuMNGQs9WjIrsNmK/1KIMNmlADuSfeVhZDhZFbPRhU7A4vH+nyL/zsCN9mZl5sMZ0HvZcCluFfQRCE8NxnIw9mkiSU3Gca8bI0aUrpkbzLEIrzN1DaxrBG3hhLIMCa87eC5ChhyE8/dIaquJSkGVbtW3GuUQIYxjw1v3gcz8wGBu0Q8yVDtxZVrjzEtXiWR4QWxiJuzoW3wfXieZNy1XT1QtHjNzt8XGcY8fVpvMxl4Nn0ELLuqfL/oon5QuyTDmDRuKrZCl2JJvdV+t2QY88iLQ473dFNjhJuKerXSrskIhScZg7ZmkHijOlfOr2S4kCo0OEWVlFjdriDXWCXD9qpo71EMAoo+r/662XXH2GmRNTKc9Pkcc58iEECGLfxWszRnC2p0X/USGZKw9LHWVwxCsiVnimP49OPlmGfTYuz8lJOuL7Uo29pqSfL3d68hNHWV0ej2i/cArlJwWhKuzrs5Jvl81oxesYxbbKN/qYtnL9DWEWIBrZDQyzrGr06leQ9iqG+PTY13hdTLrk6sURFiLS+FbkUCCV/S8mkXuy8hKLhHPQlk/ihqqnsJTuAPIkRiTtmZkn37zZK8O8fZPPAijisZbKBNIL+WL22q/EGfq7jPGx4t1mUGYJvDL8l8DQHOO5UKlXFJYiYbk2OLRpQcsDPLbwbPJbduX4kPhCSLWRUreENIJSMnJNm42Qo7tz4h+AeEvj5bAPbJaAAAAABJRU5ErkJggg==);background-size:60px 30px;background-repeat:no-repeat;vertical-align:middle}.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .no-data{background:#f0eff4;text-align:center;position:absolute;z-index:99;width:100%;height:100%;font-size:15px;padding-top:60px;top:0}.list-pull-loading .list-pull-loading-box .list-pull-loading-scroller .no-data img{width:120px;margin-top:30%}.list-pull-loading .go-top{position:absolute;z-index:99;bottom:80px;right:10px;width:50px;height:55px}.list-pull-loading .fade-enter-active{-webkit-animation:bounce-in .5s;animation:bounce-in .5s}.list-pull-loading .fade-leave-active{animation:bounce-in .5s reverse}@-webkit-keyframes bounce-in{0%{-webkit-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1.5);transform:scale(1.5)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes bounce-in{0%{-webkit-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1.5);transform:scale(1.5)}to{-webkit-transform:scale(1);transform:scale(1)}} -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## 前言 2 | [list-pull-loading](https://github.com/yujinjin/list-pull-loading)是一个基于VUE实现的下拉刷新,上拉加载的组件,支持图片懒加载,数据缓存(返回列表页记住当前位置)。主使用IScroll(iscroll-probe)来实现,提供了项目中数据列表经常会用到的下拉提示信息、上拉提示信息、图片懒加载、回到顶部,其提示信息UI、内容可灵活配置,可使用提供的默认样式也可以自定义也可以隐藏。 3 | 4 | 列表初始化时也做了优化,对于没有列表数据时显示没有数据的提示信息(可自定义),对于首次加载的数据没有超过一屏时会自动加载下一页的数据,但最多只会自动加载2次(可配置)。 5 | 6 | 7 | 8 | ## 示例 9 | demo使用了vue2+vuex3+vue-router3,对于图片懒加载使用的是vue-lazyload第三方插件。 10 | 11 | [首页](https://yujinjin.github.io/list-pull-loading/#/) 12 | 13 | ![image](https://note.youdao.com/yws/public/resource/8cea9a8eae140b99ef9a0843d5a96d81/xmlnote/48BF2C9DD0B546779955D19222F1D8FA/4296) 14 | 15 | [示例一](https://yujinjin.github.io/list-pull-loading/#/demo1) 16 | 17 | ![image](https://note.youdao.com/yws/public/resource/8cea9a8eae140b99ef9a0843d5a96d81/xmlnote/040A526107FE42D28DC0C671084467A0/3908) 18 | 19 | 说明:普通示例 20 | 21 | [示例二](https://yujinjin.github.io/list-pull-loading/#/demo2) 22 | 23 | ![image](https://note.youdao.com/yws/public/resource/8cea9a8eae140b99ef9a0843d5a96d81/xmlnote/4AAE2CB68982409A95EBEE1F9476CA3C/3915) 24 | 25 | 说明:多个tap分类数据列表 26 | 27 | [示例三](https://yujinjin.github.io/list-pull-loading/#/demo3) 28 | 29 | ![image](https://note.youdao.com/yws/public/resource/8cea9a8eae140b99ef9a0843d5a96d81/xmlnote/105DA40582E24A91B11BF663F9173F0F/3918) 30 | 31 | 说明:数据列表中有图片而且图片还使用了懒加载的方式。 32 | 33 | [示例四](https://yujinjin.github.io/list-pull-loading/#/demo4) 34 | 35 | ![image](https://note.youdao.com/yws/public/resource/8cea9a8eae140b99ef9a0843d5a96d81/xmlnote/6749738410B64D9696EA2A6563BCA338/3923) 36 | 37 | 说明:数据列表中的链接跳转到其它页面,再返回时自动加载到上一次看到的状态位置。 38 | 39 | ## 运行项目 40 | clone项目到本地,进入项目文件夹,安装依赖 41 | 42 | ```javascript 43 | git clone https://github.com/yujinjin/list-pull-loading.git 44 | cd list-pull-loading 45 | npm install 46 | ``` 47 | 运行demo,会自动打开浏览器地址运行 48 | ```javascript 49 | npm run demo 50 | ``` 51 | 编译打包项目 52 | ```javascript 53 | npm run compile 54 | ``` 55 | 56 | ## NPM 57 | ```javascript 58 | npm install list-pull-loading 59 | ``` 60 | ## 依赖 61 | - VUE 62 | - IScroll(iscroll-probe) 63 | ## CDN 64 | https://apps.bdimg.com/libs/list-pull-loading/1.0.0/list-pull-loading.js 65 | 66 | https://apps.bdimg.com/libs/list-pull-loading/1.0.0/list-pull-loading.css 67 | ```html 68 | 69 | 70 | 74 | ``` 75 | ## 使用 76 | 作为插件 77 | ```javascript 78 | import Vue from 'vue' 79 | import ListPullLoading from 'list-pull-loading' 80 | import 'list-pull-loading/dist/list-pull-loading.css' 81 | 82 | // VUE use 83 | Vue.use(ListPullLoading); 84 | // or with options 85 | Vue.use(ListPullLoading, { 86 | isLoading: false, // API是否正在加载 87 | hasData: true, // 当前列表是否有数据 88 | downElHeight: 0, // 下拉元素的高度 89 | upElHeight: 0, // 上拉提示元素的高度 90 | scrollerMinHeight: 0, //当前容器最小高度 91 | directionY: 0, // -1:up 上, 1: down下 92 | startPullTime: 0, // 开始下拉的时间 93 | endPullTime: 0, // 结束下拉的时间 94 | lastQueryTime: 0, // 最后一次查询的时间 95 | isCanToTop: false, // 根据当前滚动位置判断是否能调到顶部 96 | isShowToTop: true, // 是否显示去顶部图标 97 | initMaxTimes: 3, // 初始化数据不够一屏最大查询次数 98 | noDataText: "没有找到相关的内容哦~", // 没有列表数据时的内容展示 99 | myScroll: null, // 当前iScroll实例 100 | api: null, // 当前数据列表API查询接口 101 | auto: true, // 是否自动查询 102 | // 图片自适应,默认为false。最好不要设置为true,因为比较消耗资源。 103 | // 原因是:true的情况下是应用于列表数据里有懒加载的图片但没有指定图片大小导致iScroll计算高度不准确需要的等图片加载完之后再重新计算高度。 104 | // 目前都是通过监控图片的onload事件来刷新的这样真的不爽但也没找到其他好的解决方案,所以最好是列表中有图片加载时就预先把高度写死 105 | imgResize: false, 106 | iScrollOptions: { 107 | probeType: 3, //必须指定为3,否则拖动太快就监控不到 108 | mouseWheel: false, 109 | disableMouse: true, 110 | scrollbars: false, 111 | preventDefault: true 112 | startY: 0 113 | }, //IScroll选项 114 | down: { 115 | offset: 50, //列表下拉滚动大于50px,即可触发下拉刷新的回调 116 | initText: "下拉刷新", //初始化文案,这个是在当前下来滚动未超过指定的值时显示文案 117 | notReleaseText: "松开刷新", // 释放滚动加载时当前下拉高度还未回弹时的文案 118 | loadingText: "正在加载更多", // 正在加载时的文案 119 | state: 0, //当前加载时的状态。0:初始化状态 1:未释放滚动加载时 2:正在加载时 120 | isShowLastTimeText: true // 是否显示最后更新时间提示 121 | }, // 下拉刷新 122 | up: { 123 | offset: 50, //列表上拉滚动大于50px,即可触发上拉加载的回调 124 | initText: "上拉加载更多", //初始化文案,当前上拉高度未超过指定的高度时 125 | notReleaseText: "松开加载更多", // 未释放滚动加载时的文案,当前上拉高度超过指定的高度时且还未释放滚动 126 | loadingText: "正在加载更多", // 正在加载时的文案 127 | noMoreText: "没有更多数据了...", // 没有数据时的文案 128 | state: 0, //当前加载时的状态。0:初始化状态 1:未释放滚动加载时 2:正在加载时 3: 没有更多数据了 129 | }, // 上拉加载 130 | parameters: { 131 | maxResultCount: 20, //每次分页数据加载多少条 132 | skipCount: 0 //每次数据偏移 133 | } // 数据查询参数 134 | }); 135 | ``` 136 | 作为组件 137 | ```javascript 138 | import Vue from 'vue' 139 | import {listPullLoading} from 'list-pull-loading' 140 | import "list-pull-loading/dist/list-pull-loading.css" 141 | 142 | new Vue({ 143 | // ... 144 | components: { 145 | "list-pull-loading": listPullLoading 146 | } 147 | }) 148 | ``` 149 | view层举例 150 | ```html 151 | 152 | 153 | 156 | 157 | 166 | 167 | 170 | 171 | 174 | 175 | ``` 176 | 注意 177 | 1. 由于组件使用了IScrol(iscroll-probe)来实现如果项目中是通过webpack来引入IScrol包一定要在webpack.config里配置IScrol的alias,具体如下: 178 | ```javascript 179 | ... 180 | resolve: { 181 | alias: { 182 | iscroll: 'iscroll/build/iscroll-probe' 183 | } 184 | } 185 | ... 186 | ``` 187 | 2. 部分老androd机可能会有卡顿现象,建议加入以下css属性样式来提升硬件加速 188 | ```css 189 | * { 190 | -webkit-overflow-scrolling: touch; 191 | } 192 | ``` 193 | 3. 发现在chrome浏览器中模拟webapp运行时鼠标滑动很不流畅,原因是新谷歌浏览滚动条的阻止默认事件会失效,所以得所有滚动区域都要加上touch-action:none 来解决。 194 | ```css 195 | { 196 | ... 197 | touch-action: none; 198 | ... 199 | } 200 | ``` 201 | 4. 由于list-pull-loading组件的滚动不是body上滚动而是在内部盒子里滚动,所以在定义内部的盒子高度,特别是页面内局部滚动。 202 | 203 | ![image](https://note.youdao.com/yws/public/resource/8cea9a8eae140b99ef9a0843d5a96d81/xmlnote/16E8C8F333944E5C9C65A572EA0A29A6/4167) 204 | 205 | ## 配置选项 206 | 207 | 名称 | 描述 | 默认值 | 可选项 208 | ---|---|---|--- 209 | `isShowToTop` | 是否显示去顶部图标,默认显示 | `true` | `Boolean` 210 | `initMaxTimes` | 初始化列表数据时,如果当前有足够的列表数据但查询的数据不足以覆盖到当前容器的底部会自动进行下一页数据加载,最多自动加载3次(包含初次)。

比如:数据初始化时每次只查询出5条数据,但实际当前的容器盒子需要13条数据才会覆盖到底部,这个时候组件会自动判断如果没有覆盖到底部会自动加载下一页。| `3` | `Number` 211 | `noDataText` | 没有列表数据时的文案展示 | `没有找到相关的内容哦~` | `String` 212 | `api` | 当前数据列表API函数,会传入2个参数,parameters:当前列表查询参数, isLoadingMore:是否是重新加载。**函数的返回值必须是Promise类型,而且是必须配置,如果不配置会抛出"错误的API"异常**。 | `null` | `Function` 213 | `auto` | 是否自动查询,默认初始化会自动加载API数据 | `true` | `Boolean` 214 | `imgResize` | 是否自动查询图片自适应,默认为false。最好不要设置为true,因为比较消耗资源。

原因是:true的情况下是应用于列表数据里有懒加载的图片但没有指定图片大小导致iScroll计算高度不准确需要的等图片加载完之后再重新计算高度。

当前都是通过监控图片的onload事件来刷新的,这样真的不爽但也没找到其他好的解决方案,所以最好是列表中有图片加载时就预先把高度预算好 | `true` | `Boolean` 215 | `iScrollOptions` | iscroll的配置选项。

其中probeType的配置选项为3,否则拖动太快就监控不到。 | `{probeType: 3, mouseWheel: false, disableMouse: true, scrollbars: false, preventDefault: true, startY: 0}` | 具体可自行查询iscroll的[API](http://iscrolljs.com/) 216 | `down` | 下拉刷新配置选项,**如果为false就禁止下拉**。

offset:列表下拉滚动的偏移px数量(number类型),即可触发下拉刷新的回调

initText:初始化文案,这个是在当前下来滚动未超过指定的值时显示文案

notReleaseText:释放滚动加载时当前下拉高度还未回弹时的文案

loadingText:数据正在加载时的文案

state:当前加载时的状态(number类型)。0:初始化状态 1:未释放滚动加载时 2:正在加载时

isShowLastTimeText:是否显示最后更新时间提示| `down: {offset: 50, initText: "下拉刷新", notReleaseText: "松开刷新", loadingText: "正在加载更多", state: 0, isShowLastTimeText: true}` | `Object` 217 | `up` | 上拉加载配置选项,**如果为false就禁止上拉加载**。

offset:列表上拉加载滚动的偏移px数量(number类型),即可触发加载数据的回调

initText:初始化文案,当上拉高度未超过指定的高度时

notReleaseText:未释放滚动加载时的文案,当前上拉高度超过指定的高度时且还未释放滚动时。

loadingText: 上拉API正在加载时的文案

noMoreText:没有数据时的文案

state:0:初始化状态 1:未释放滚动加载时 2:正在加载时 3: 没有更多数据了| `up: {offset: 50, initText: "上拉加载更多", notReleaseText: "松开加载更多", loadingText: "正在加载更多", noMoreText: "没有更多数据了...", state: 0}` | `Object` 218 | `parameters` | API数据参数,默认只有maxResultCount:每次分页数据加载多少条,skipCount:每次查询数据的开始索引2个参数 | `{maxResultCount: 20, skipCount: 0}` | `Object` 219 | 220 | ## API 221 | ###### 1. refresh 222 | 刷新数据列表,有时根据实际的业务需要,需手动刷新列表数据。 223 | 224 | ```javascript 225 | this.$refs['listPullLoading'].refresh();//listPullLoading是组件注册引用名称 226 | ``` 227 | ###### 2. initIScrollCacheData 228 | 初始化列表的缓存数据,主要用于列表数据的缓存 229 | 230 | ```javascript 231 | this.$refs['listPullLoading'].initIScrollCacheData(y=0, upState=0);//y 当前滚动条的y轴位置,upState 当前下拉列表的状态 232 | ``` 233 | ###### 3. destroy 234 | 组件销毁 235 | 236 | ## Event 237 | ###### 1. scroll 238 | 当前列表滚动时的事件。传入2个参数,listPullLoadingObject:当前组件对象,iscrollObject:当前组件内的iscroll对象 239 | 240 | ```javascript 241 | 242 | ``` 243 | 244 | ###### 2. scrollEnd 245 | 当前列表滚动结束时的事件。传入2个参数,listPullLoadingObject:当前组件对象,iscrollObject:当前组件内的iscroll对象 246 | 247 | ```javascript 248 | 249 | ``` 250 | 251 | ###### 3. down 252 | 下拉刷新事件,iscrollObject:当前组件内的iscroll对象 253 | 254 | ```javascript 255 | 256 | ``` 257 | 258 | ###### 4. up 259 | 上拉加载事件,iscrollObject:当前组件内的iscroll对象 260 | 261 | ```javascript 262 | 263 | ``` 264 | 265 | ## 最后 266 | - 如果喜欢一定要 star哈!!!(谢谢!!) 267 | 268 | - 如果有意见和问题 请在 lssues提出,我会在线解答。 269 | -------------------------------------------------------------------------------- /demo/demo3.vue: -------------------------------------------------------------------------------- 1 | 36 | 37 | 160 | 161 | -------------------------------------------------------------------------------- /demo/demo2.vue: -------------------------------------------------------------------------------- 1 | 36 | 37 | 163 | 164 | -------------------------------------------------------------------------------- /demo/lib/vue-lazyload.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Vue-Lazyload.js v1.0.6 3 | * (c) 2017 Awe 4 | * Released under the MIT License. 5 | */ 6 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.VueLazyload=t()}(this,function(){"use strict";function e(e,t){if(e.length){var n=e.indexOf(t);return n>-1?e.splice(n,1):void 0}}function t(e,t){if(!e||!t)return e||{};if(e instanceof Object)for(var n in t)e[n]=t[n];return e}function n(e,t){for(var n=!1,i=0,r=e.length;it[0])return 1;if(e[0]===t[0]){if(t[1].indexOf(".webp",t[1].length-5)!==-1)return 1;if(e[1].indexOf(".webp",e[1].length-5)!==-1)return-1}return 0});for(var d="",l=void 0,c=i.length,h=0;h=o){d=l[1];break}return d}}function r(e,t){for(var n=void 0,i=0,r=e.length;i=t?s():n=setTimeout(s,t)}}}function s(){if(f){var e=!1;try{var t=Object.defineProperty({},"passive",{get:function(){e=!0}});window.addEventListener("test",null,t)}catch(e){}return e}}function u(e){return null!==e&&"object"===("undefined"==typeof e?"undefined":l(e))}function d(e){if(!(e instanceof Object))return[];if(Object.keys)return Object.keys(e);var t=[];for(var n in e)e.hasOwnProperty(n)&&t.push(n);return t}var l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},c=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},h=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:1;return f&&window.devicePixelRatio||e},v=s(),y={on:function(e,t,n){v?e.addEventListener(t,n,{passive:!0}):e.addEventListener(t,n,!1)},off:function(e,t,n){e.removeEventListener(t,n)}},g=function(e,t,n){var i=new Image;i.src=e.src,i.onload=function(){t({naturalHeight:i.naturalHeight,naturalWidth:i.naturalWidth,src:i.src})},i.onerror=function(e){n(e)}},m=function(e,t){return"undefined"!=typeof getComputedStyle?getComputedStyle(e,null).getPropertyValue(t):e.style[t]},b=function(e){return m(e,"overflow")+m(e,"overflow-y")+m(e,"overflow-x")},L=function(e){if(f){if(!(e instanceof HTMLElement))return window;for(var t=e;t&&t!==document.body&&t!==document.documentElement&&t.parentNode;){if(/(scroll|auto)/.test(b(t)))return t;t=t.parentNode}return window}},w={},k=function(){function e(t){var n=t.el,i=t.src,r=t.error,o=t.loading,a=t.bindType,s=t.$parent,u=t.options,d=t.elRenderer;c(this,e),this.el=n,this.src=i,this.error=r,this.loading=o,this.bindType=a,this.attempt=0,this.naturalHeight=0,this.naturalWidth=0,this.options=u,this.filter(),this.initState(),this.performanceData={init:Date.now(),loadStart:null,loadEnd:null},this.rect=n.getBoundingClientRect(),this.$parent=s,this.elRenderer=d,this.render("loading",!1)}return h(e,[{key:"initState",value:function(){this.state={error:!1,loaded:!1,rendered:!1}}},{key:"record",value:function(e){this.performanceData[e]=Date.now()}},{key:"update",value:function(e){var t=e.src,n=e.loading,i=e.error,r=this.src;this.src=t,this.loading=n,this.error=i,this.filter(),r!==this.src&&(this.attempt=0,this.initState())}},{key:"getRect",value:function(){this.rect=this.el.getBoundingClientRect()}},{key:"checkInView",value:function(){return this.getRect(),this.rect.topthis.options.preLoadTop&&this.rect.left0}},{key:"filter",value:function(){var e=this;d(this.options.filter).map(function(t){e.options.filter[t](e,e.options)})}},{key:"renderLoading",value:function(e){var t=this;g({src:this.loading},function(n){t.render("loading",!1),e()})}},{key:"load",value:function(){var e=this;return this.attempt>this.options.attempt-1&&this.state.error?void(this.options.silent||console.log("error end")):this.state.loaded||w[this.src]?this.render("loaded",!0):void this.renderLoading(function(){e.attempt++,e.record("loadStart"),g({src:e.src},function(t){e.naturalHeight=t.naturalHeight,e.naturalWidth=t.naturalWidth,e.state.loaded=!0,e.state.error=!1,e.record("loadEnd"),e.render("loaded",!1),w[e.src]=1},function(t){e.state.error=!0,e.state.loaded=!1,e.render("error",!1)})})}},{key:"render",value:function(e,t){this.elRenderer(this,e,t)}},{key:"performance",value:function(){var e="loading",t=0;return this.state.loaded&&(e="loaded",t=(this.performanceData.loadEnd-this.performanceData.loadStart)/1e3),this.state.error&&(e="error"),{src:this.src,state:e,time:t}}},{key:"destroy",value:function(){this.el=null,this.src=null,this.error=null,this.loading=null,this.bindType=null,this.attempt=0}}]),e}(),A="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",E=["scroll","wheel","mousewheel","resize","animationend","transitionend","touchmove"],T=function(s){return function(){function d(e){var t=this,n=e.preLoad,i=e.error,r=e.preLoadTop,s=e.dispatchEvent,u=e.loading,l=e.attempt,h=e.silent,f=e.scale,v=e.listenEvents,y=(e.hasbind,e.filter),g=e.adapter;c(this,d),this.version="1.0.6",this.ListenerQueue=[],this.TargetIndex=0,this.TargetQueue=[],this.options={silent:h||!0,dispatchEvent:!!s,preLoad:n||1.3,preLoadTop:r||0,error:i||A,loading:u||A,attempt:l||3,scale:f||p(f),ListenEvents:v||E,hasbind:!1,supportWebp:o(),filter:y||{},adapter:g||{}},this._initEvent(),this.lazyLoadHandler=a(function(){var e=!1;t.ListenerQueue.forEach(function(t){t.state.loaded||(e=t.checkInView(),e&&t.load())})},200)}return h(d,[{key:"config",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t(this.options,e)}},{key:"performance",value:function(){var e=[];return this.ListenerQueue.map(function(t){e.push(t.performance())}),e}},{key:"addLazyBox",value:function(e){this.ListenerQueue.push(e),f&&(this._addListenerTarget(window),e.$el&&e.$el.parentNode&&this._addListenerTarget(e.$el.parentNode))}},{key:"add",value:function(e,t,r){var o=this;if(n(this.ListenerQueue,function(t){return t.el===e}))return this.update(e,t),s.nextTick(this.lazyLoadHandler);var a=this._valueFormatter(t.value),u=a.src,d=a.loading,l=a.error;s.nextTick(function(){u=i(e,o.options.scale)||u;var n=Object.keys(t.modifiers)[0],a=void 0;n&&(a=r.context.$refs[n],a=a?a.$el||a:document.getElementById(n)),a||(a=L(e));var c=new k({bindType:t.arg,$parent:a,el:e,loading:d,error:l,src:u,elRenderer:o._elRenderer.bind(o),options:o.options});o.ListenerQueue.push(c),f&&(o._addListenerTarget(window),o._addListenerTarget(a)),o.lazyLoadHandler(),s.nextTick(function(){return o.lazyLoadHandler()})})}},{key:"update",value:function(e,t){var n=this,o=this._valueFormatter(t.value),a=o.src,u=o.loading,d=o.error;a=i(e,this.options.scale)||a;var l=r(this.ListenerQueue,function(t){return t.el===e});l&&l.update({src:a,loading:u,error:d}),this.lazyLoadHandler(),s.nextTick(function(){return n.lazyLoadHandler()})}},{key:"remove",value:function(t){if(t){var n=r(this.ListenerQueue,function(e){return e.el===t});n&&(this._removeListenerTarget(n.$parent),this._removeListenerTarget(window),e(this.ListenerQueue,n)&&n.destroy())}}},{key:"removeComponent",value:function(t){t&&(e(this.ListenerQueue,t),t.$parent&&t.$el.parentNode&&this._removeListenerTarget(t.$el.parentNode),this._removeListenerTarget(window))}},{key:"_addListenerTarget",value:function(e){if(e){var t=r(this.TargetQueue,function(t){return t.el===e});return t?t.childrenCount++:(t={el:e,id:++this.TargetIndex,childrenCount:1,listened:!0},this._initListen(t.el,!0),this.TargetQueue.push(t)),this.TargetIndex}}},{key:"_removeListenerTarget",value:function(e){var t=this;this.TargetQueue.forEach(function(n,i){n.el===e&&(n.childrenCount--,n.childrenCount||(t._initListen(n.el,!1),t.TargetQueue.splice(i,1),n=null))})}},{key:"_initListen",value:function(e,t){var n=this;this.options.ListenEvents.forEach(function(i){return y[t?"on":"off"](e,i,n.lazyLoadHandler)})}},{key:"_initEvent",value:function(){var t=this;this.Event={listeners:{loading:[],loaded:[],error:[]}},this.$on=function(e,n){t.Event.listeners[e].push(n)},this.$once=function(e,n){function i(){r.$off(e,i),n.apply(r,arguments)}var r=t;t.$on(e,i)},this.$off=function(n,i){return i?void e(t.Event.listeners[n],i):void(t.Event.listeners[n]=[])},this.$emit=function(e,n,i){t.Event.listeners[e].forEach(function(e){return e(n,i)})}}},{key:"_elRenderer",value:function(e,t,n){if(e.el){var i=e.el,r=e.bindType,o=void 0;switch(t){case"loading":o=e.loading;break;case"error":o=e.error;break;default:o=e.src}if(r?i.style[r]="url("+o+")":i.getAttribute("src")!==o&&i.setAttribute("src",o),i.setAttribute("lazy",t),this.$emit(t,e,n),this.options.adapter[t]&&this.options.adapter[t](e,this.options),this.options.dispatchEvent){var a=new CustomEvent(t,{detail:e});i.dispatchEvent(a)}}}},{key:"_valueFormatter",value:function(e){var t=e,n=this.options.loading,i=this.options.error;return u(e)&&(e.src||this.options.silent||console.error("Vue Lazyload warning: miss src with "+e),t=e.src,n=e.loading||this.options.loading,i=e.error||this.options.error),{src:t,loading:n,error:i}}}]),d}()},_=function(e){return{props:{tag:{type:String,default:"div"}},render:function(e){return this.show===!1?e(this.tag):e(this.tag,null,this.$slots.default)},data:function(){return{state:{loaded:!1},rect:{},show:!1}},mounted:function(){e.addLazyBox(this),e.lazyLoadHandler()},beforeDestroy:function(){e.removeComponent(this)},methods:{getRect:function(){this.rect=this.$el.getBoundingClientRect()},checkInView:function(){return this.getRect(),f&&this.rect.top0&&this.rect.left0},load:function(){this.show=!0,this.state.loaded=!0,this.$emit("show",this)}}}},$={install:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=T(e),r=new i(n),o="2"===e.version.split(".")[0];e.prototype.$Lazyload=r,n.lazyComponent&&e.component("lazy-component",_(r)),o?e.directive("lazy",{bind:r.add.bind(r),update:r.update.bind(r),componentUpdated:r.lazyLoadHandler.bind(r),unbind:r.remove.bind(r)}):e.directive("lazy",{bind:r.lazyLoadHandler.bind(r),update:function(e,n){t(this.vm.$refs,this.vm.$els),r.add(this.el,{modifiers:this.modifiers||{},arg:this.arg,value:e,oldValue:n},{context:this.vm})},unbind:function(){r.remove(this.el)}})}};return $}); -------------------------------------------------------------------------------- /demo/demo4.vue: -------------------------------------------------------------------------------- 1 | 36 | 37 | 225 | 226 | -------------------------------------------------------------------------------- /dist/list-pull-loading.js: -------------------------------------------------------------------------------- 1 | !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("iscroll")):"function"==typeof define&&define.amd?define(["iscroll"],e):"object"==typeof exports?exports.ListPullLoading=e(require("iscroll")):t.ListPullLoading=e(t.IScroll)}("undefined"!=typeof self?self:this,function(t){return function(t){function e(s){if(i[s])return i[s].exports;var a=i[s]={i:s,l:!1,exports:{}};return t[s].call(a.exports,a,a.exports,e),a.l=!0,a.exports}var i={};return e.m=t,e.c=i,e.d=function(t,i,s){e.o(t,i)||Object.defineProperty(t,i,{configurable:!1,enumerable:!0,get:s})},e.n=function(t){var i=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(i,"a",i),i},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="/",e(e.s=0)}([function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.listPullLoading=e.install=void 0;var s=i(1),a=function(t){return t&&t.__esModule?t:{default:t}}(s),r=function(t,e){e&&(listLoading.props.globalOptions.default=function(){return e}),t.component("list-pull-loading",a.default)};e.install=r,e.listPullLoading=a.default,e.default={install:r,listPullLoading:a.default}},function(t,e,i){"use strict";function s(t){i(2)}Object.defineProperty(e,"__esModule",{value:!0});var a=i(4),r=i.n(a),o=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"list-pull-loading"},[s("div",{directives:[{name:"show",rawName:"v-show",value:t.isLoading,expression:"isLoading"}],staticClass:"loading-mask",on:{touch:function(t){t.stopPropagation(),t.preventDefault()}}}),t._v(" "),t._t("goTop",[s("transition",{attrs:{name:"fade"}},[t.isShowToTop&&t.isCanToTop?s("div",{staticClass:"go-top",on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.gotoTop(e)}}},[s("img",{attrs:{src:i(6)}})]):t._e()])],{isCanToTop:t.isCanToTop}),t._v(" "),s("div",{ref:"scroller",staticClass:"list-pull-loading-box"},[s("div",{staticClass:"list-pull-loading-scroller"},[t._t("down",[s("div",{directives:[{name:"show",rawName:"v-show",value:0!=t.down,expression:"down != false"}],staticClass:"pull-down-tips",class:{loading:0!==t.down.state,"down-margin":null===t.myScroll}},[s("div",{staticClass:"tips-content"},[s("div",{directives:[{name:"show",rawName:"v-show",value:0===t.down.state||1===t.down.state,expression:"down.state === 0 || down.state === 1"}],staticClass:"unload"},[s("p",{staticClass:"arrow",class:{"arrow-normal":0===t.down.state,"arrow-rotate":1===t.down.state}}),t._v(" "),s("p",{staticClass:"tips-text"},[t._v(t._s(1===t.down.state?t.down.notReleaseText:t.down.initText))])]),t._v(" "),s("div",{directives:[{name:"show",rawName:"v-show",value:2===t.down.state,expression:"down.state === 2"}],staticClass:"onload"},[s("p",{staticClass:"progress"},[s("svg",{attrs:{viewBox:"0 0 64 64"}},[s("g",{attrs:{"stroke-width":"4","stroke-linecap":"round"}},[s("line",{attrs:{y1:"17",y2:"29",transform:"translate(32,32) rotate(180)"}},[s("animate",{attrs:{attributeName:"stroke-opacity",dur:"750ms",values:"1;.85;.7;.65;.55;.45;.35;.25;.15;.1;0;1",repeatCount:"indefinite"}})]),t._v(" "),s("line",{attrs:{y1:"17",y2:"29",transform:"translate(32,32) rotate(210)"}},[s("animate",{attrs:{attributeName:"stroke-opacity",dur:"750ms",values:"0;1;.85;.7;.65;.55;.45;.35;.25;.15;.1;0",repeatCount:"indefinite"}})]),t._v(" "),s("line",{attrs:{y1:"17",y2:"29",transform:"translate(32,32) rotate(240)"}},[s("animate",{attrs:{attributeName:"stroke-opacity",dur:"750ms",values:".1;0;1;.85;.7;.65;.55;.45;.35;.25;.15;.1",repeatCount:"indefinite"}})]),t._v(" "),s("line",{attrs:{y1:"17",y2:"29",transform:"translate(32,32) rotate(270)"}},[s("animate",{attrs:{attributeName:"stroke-opacity",dur:"750ms",values:".15;.1;0;1;.85;.7;.65;.55;.45;.35;.25;.15",repeatCount:"indefinite"}})]),t._v(" "),s("line",{attrs:{y1:"17",y2:"29",transform:"translate(32,32) rotate(300)"}},[s("animate",{attrs:{attributeName:"stroke-opacity",dur:"750ms",values:".25;.15;.1;0;1;.85;.7;.65;.55;.45;.35;.25",repeatCount:"indefinite"}})]),t._v(" "),s("line",{attrs:{y1:"17",y2:"29",transform:"translate(32,32) rotate(330)"}},[s("animate",{attrs:{attributeName:"stroke-opacity",dur:"750ms",values:".35;.25;.15;.1;0;1;.85;.7;.65;.55;.45;.35",repeatCount:"indefinite"}})]),t._v(" "),s("line",{attrs:{y1:"17",y2:"29",transform:"translate(32,32) rotate(0)"}},[s("animate",{attrs:{attributeName:"stroke-opacity",dur:"750ms",values:".45;.35;.25;.15;.1;0;1;.85;.7;.65;.55;.45",repeatCount:"indefinite"}})]),t._v(" "),s("line",{attrs:{y1:"17",y2:"29",transform:"translate(32,32) rotate(30)"}},[s("animate",{attrs:{attributeName:"stroke-opacity",dur:"750ms",values:".55;.45;.35;.25;.15;.1;0;1;.85;.7;.65;.55",repeatCount:"indefinite"}})]),t._v(" "),s("line",{attrs:{y1:"17",y2:"29",transform:"translate(32,32) rotate(60)"}},[s("animate",{attrs:{attributeName:"stroke-opacity",dur:"750ms",values:".65;.55;.45;.35;.25;.15;.1;0;1;.85;.7;.65",repeatCount:"indefinite"}})]),t._v(" "),s("line",{attrs:{y1:"17",y2:"29",transform:"translate(32,32) rotate(90)"}},[s("animate",{attrs:{attributeName:"stroke-opacity",dur:"750ms",values:".7;.65;.55;.45;.35;.25;.15;.1;0;1;.85;.7",repeatCount:"indefinite"}})]),t._v(" "),s("line",{attrs:{y1:"17",y2:"29",transform:"translate(32,32) rotate(120)"}},[s("animate",{attrs:{attributeName:"stroke-opacity",dur:"750ms",values:".85;.7;.65;.55;.45;.35;.25;.15;.1;0;1;.85",repeatCount:"indefinite"}})]),t._v(" "),s("line",{attrs:{y1:"17",y2:"29",transform:"translate(32,32) rotate(150)"}},[s("animate",{attrs:{attributeName:"stroke-opacity",dur:"750ms",values:"1;.85;.7;.65;.55;.45;.35;.25;.15;.1;0;1",repeatCount:"indefinite"}})])])])]),t._v(" "),s("p",{staticClass:"tips-text"},[t._v(t._s(t.down.loadingText))])]),t._v(" "),t.down.isShowLastTimeText?s("div",{staticClass:"last-time-text tips-text"},[t._v("\n\t\t\t\t\t\t\t最后更新时间:"),s("em",[t._v(t._s(t.timeDifferenceText))])]):t._e()])])],{down:t.down}),t._v(" "),t._t("default"),t._v(" "),t.hasData?t._t("list"):t._t("nodata",[s("div",{staticClass:"no-data"},[s("img",{attrs:{src:i(7)}}),t._v(" "),s("div",{staticClass:"mt20"},[t._v(t._s(t.noDataText))])])]),t._v(" "),t.hasData?t._t("up",[s("div",{directives:[{name:"show",rawName:"v-show",value:0!=t.up,expression:"up != false"}],staticClass:"pull-up-tips"},[s("div",{staticClass:"tips-content"},[s("div",{directives:[{name:"show",rawName:"v-show",value:0===t.up.state||1===t.up.state,expression:"up.state === 0 || up.state === 1"}],staticClass:"unload"},[s("p",{staticClass:"arrow",class:{"arrow-normal":0===t.up.state,"arrow-rotate":1===t.up.state}}),t._v(" "),s("p",{staticClass:"tips-text"},[t._v(t._s(1===t.up.state?t.up.notReleaseText:t.up.initText))])]),t._v(" "),s("div",{directives:[{name:"show",rawName:"v-show",value:2===t.up.state,expression:"up.state === 2"}],staticClass:"onload"},[s("p",{staticClass:"progress"},[s("svg",{attrs:{viewBox:"0 0 64 64"}},[s("g",{attrs:{"stroke-width":"4","stroke-linecap":"round"}},[s("line",{attrs:{y1:"17",y2:"29",transform:"translate(32,32) rotate(180)"}},[s("animate",{attrs:{attributeName:"stroke-opacity",dur:"750ms",values:"1;.85;.7;.65;.55;.45;.35;.25;.15;.1;0;1",repeatCount:"indefinite"}})]),t._v(" "),s("line",{attrs:{y1:"17",y2:"29",transform:"translate(32,32) rotate(210)"}},[s("animate",{attrs:{attributeName:"stroke-opacity",dur:"750ms",values:"0;1;.85;.7;.65;.55;.45;.35;.25;.15;.1;0",repeatCount:"indefinite"}})]),t._v(" "),s("line",{attrs:{y1:"17",y2:"29",transform:"translate(32,32) rotate(240)"}},[s("animate",{attrs:{attributeName:"stroke-opacity",dur:"750ms",values:".1;0;1;.85;.7;.65;.55;.45;.35;.25;.15;.1",repeatCount:"indefinite"}})]),t._v(" "),s("line",{attrs:{y1:"17",y2:"29",transform:"translate(32,32) rotate(270)"}},[s("animate",{attrs:{attributeName:"stroke-opacity",dur:"750ms",values:".15;.1;0;1;.85;.7;.65;.55;.45;.35;.25;.15",repeatCount:"indefinite"}})]),t._v(" "),s("line",{attrs:{y1:"17",y2:"29",transform:"translate(32,32) rotate(300)"}},[s("animate",{attrs:{attributeName:"stroke-opacity",dur:"750ms",values:".25;.15;.1;0;1;.85;.7;.65;.55;.45;.35;.25",repeatCount:"indefinite"}})]),t._v(" "),s("line",{attrs:{y1:"17",y2:"29",transform:"translate(32,32) rotate(330)"}},[s("animate",{attrs:{attributeName:"stroke-opacity",dur:"750ms",values:".35;.25;.15;.1;0;1;.85;.7;.65;.55;.45;.35",repeatCount:"indefinite"}})]),t._v(" "),s("line",{attrs:{y1:"17",y2:"29",transform:"translate(32,32) rotate(0)"}},[s("animate",{attrs:{attributeName:"stroke-opacity",dur:"750ms",values:".45;.35;.25;.15;.1;0;1;.85;.7;.65;.55;.45",repeatCount:"indefinite"}})]),t._v(" "),s("line",{attrs:{y1:"17",y2:"29",transform:"translate(32,32) rotate(30)"}},[s("animate",{attrs:{attributeName:"stroke-opacity",dur:"750ms",values:".55;.45;.35;.25;.15;.1;0;1;.85;.7;.65;.55",repeatCount:"indefinite"}})]),t._v(" "),s("line",{attrs:{y1:"17",y2:"29",transform:"translate(32,32) rotate(60)"}},[s("animate",{attrs:{attributeName:"stroke-opacity",dur:"750ms",values:".65;.55;.45;.35;.25;.15;.1;0;1;.85;.7;.65",repeatCount:"indefinite"}})]),t._v(" "),s("line",{attrs:{y1:"17",y2:"29",transform:"translate(32,32) rotate(90)"}},[s("animate",{attrs:{attributeName:"stroke-opacity",dur:"750ms",values:".7;.65;.55;.45;.35;.25;.15;.1;0;1;.85;.7",repeatCount:"indefinite"}})]),t._v(" "),s("line",{attrs:{y1:"17",y2:"29",transform:"translate(32,32) rotate(120)"}},[s("animate",{attrs:{attributeName:"stroke-opacity",dur:"750ms",values:".85;.7;.65;.55;.45;.35;.25;.15;.1;0;1;.85",repeatCount:"indefinite"}})]),t._v(" "),s("line",{attrs:{y1:"17",y2:"29",transform:"translate(32,32) rotate(150)"}},[s("animate",{attrs:{attributeName:"stroke-opacity",dur:"750ms",values:"1;.85;.7;.65;.55;.45;.35;.25;.15;.1;0;1",repeatCount:"indefinite"}})])])])]),t._v(" "),s("p",{staticClass:"tips-text"},[t._v(t._s(t.up.loadingText))])]),t._v(" "),t._t("no-more",[s("div",{directives:[{name:"show",rawName:"v-show",value:3===t.up.state,expression:"up.state === 3"}],staticClass:"no-more"},[s("p",{staticClass:"icon"}),t._v(" "),s("p",{staticClass:"tips-text"},[t._v(t._s(t.up.noMoreText))])])],{isShow:3===t.up.state})],2)])],{up:t.up}):t._e()],2)])],2)},n=[],l={render:o,staticRenderFns:n},u=l,c=i(3),p=s,h=c(r.a,u,!1,p,null,null);e.default=h.exports},function(t,e){},function(t,e){t.exports=function(t,e,i,s,a,r){var o,n=t=t||{},l=typeof t.default;"object"!==l&&"function"!==l||(o=t,n=t.default);var u="function"==typeof n?n.options:n;e&&(u.render=e.render,u.staticRenderFns=e.staticRenderFns,u._compiled=!0),i&&(u.functional=!0),a&&(u._scopeId=a);var c;if(r?(c=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),s&&s.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(r)},u._ssrRegister=c):s&&(c=s),c){var p=u.functional,h=p?u.render:u.beforeCreate;p?(u._injectStyles=c,u.render=function(t,e){return c.call(e),h(t,e)}):u.beforeCreate=h?[].concat(h,c):[c]}return{esModule:o,exports:n,options:u}}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a=i(5),r=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default={data:function(){return{isLoading:!1,hasData:!0,downElHeight:0,upElHeight:0,scrollerMinHeight:0,directionY:0,startPullTime:0,endPullTime:0,lastQueryTime:0,isCanToTop:!1,isShowToTop:!0,initMaxTimes:3,noDataText:"没有找到相关的内容哦~",myScroll:null,api:null,auto:!0,imgResize:!1,iScrollOptions:{probeType:3,mouseWheel:!1,disableMouse:!0,scrollbars:!1,preventDefault:!0,startY:0},down:{offset:50,initText:"下拉刷新",notReleaseText:"松开刷新",loadingText:"正在加载更多",state:0,isShowLastTimeText:!0},up:{offset:50,initText:"上拉加载更多",notReleaseText:"松开加载更多",loadingText:"正在加载更多",noMoreText:"没有更多数据了...",state:0},parameters:{maxResultCount:20,skipCount:0}}},props:{options:Object,globalOptions:{type:Object,required:!1,default:function(){return{}}}},watch:{options:{handler:function(t,e){var i=this;t.parameters&&Object.assign(this.parameters,t.parameters),!0===t.auto&&1!=this.auto&&(this.auto=!0,this.updateUpState(2),this.query(2).then(function(){3!=i.up.state&&i.updateUpState(0),i.initMaxScroller(i.initMaxTimes-1)}))},deep:!0}},computed:{timeDifferenceText:function(){if(!this.lastQueryTime)return"正在查询,请稍后!";this.startPullTime||(this.startPullTime=(new Date).getTime());var t=(this.startPullTime-this.lastQueryTime)/1e3;return t<60?"刚刚之前":t<3600?parseInt(t/60,10)+"分钟前":t<86400?parseInt(t/3600,10)+"小时前":t<604800?parseInt(t/86400,10)+"天前":this.dateFormat(new Date(this.lastQueryTime),"yyyy年MM月dd日 hh:mm:ss")}},mounted:function(){return this.initData()},methods:{dateFormat:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"yyyy-MM-dd";if(!t||!t instanceof Date)return"";var i={"M+":t.getMonth()+1,"d+":t.getDate(),"h+":t.getHours(),"m+":t.getMinutes(),"s+":t.getSeconds(),"q+":Math.floor((t.getMonth()+3)/3),S:t.getMilliseconds()};/(y+)/.test(e)&&(e=e.replace(RegExp.$1,(t.getFullYear()+"").substr(4-RegExp.$1.length)));for(var s in i)new RegExp("("+s+")").test(e)&&(e=e.replace(RegExp.$1,1==RegExp.$1.length?i[s]:("00"+i[s]).substr((""+i[s]).length)));return e},initData:function(){var t=this,e=Object.assign(this.globalOptions,this.options);if(!e.api)throw"错误的API";this.api=e.api,"boolean"==typeof e.auto&&(this.auto=e.auto),"number"==typeof e.initMaxTimes&&(this.initMaxTimes=e.initMaxTimes),"boolean"==typeof e.isShowToTop&&(this.isShowToTop=e.isShowToTop),e.noDataText&&(this.noDataText=e.noDataText),"boolean"==typeof e.imgResize&&(this.imgResize=e.imgResize),!1===e.down?this.down=!1:"object"==s(e.down)&&Object.assign(this.down,e.down),!1===e.up?this.up=!1:"object"==s(e.up)&&Object.assign(this.up,e.up),e.iScrollOptions&&Object.assign(this.iScrollOptions,e.iScrollOptions),e.parameters&&Object.assign(this.parameters,e.parameters),this.$nextTick(function(){t.initDom(),t.auto&&1!=t.isLoading&&(t.updateUpState(2),t.query(0).then(function(){3!=t.up.state&&t.updateUpState(0),t.initMaxScroller(t.initMaxTimes-1)}))})},initDom:function(){this.downElHeight=this.$refs.scroller.querySelector(".pull-down-tips")?this.$refs.scroller.querySelector(".pull-down-tips").offsetHeight:0,this.upElHeight=this.$refs.scroller.querySelector(".pull-up-tips")?this.$refs.scroller.querySelector(".pull-up-tips").offsetHeight:0,this.iScrollOptions.startY=-this.downElHeight,this.scrollerMinHeight=this.$refs.scroller.offsetHeight-(this.iScrollOptions.startY<0?this.iScrollOptions.startY:-1),this.$refs.scroller.querySelector(".list-pull-loading-scroller").style.minHeight=this.scrollerMinHeight+"px"},initIScroll:function(){var t=this,e=this;return this.initDom(),this.myScroll=new r.default(this.$refs.scroller,this.iScrollOptions),this.myScroll.on("scrollStart",function(){e.startPullTime=(new Date).getTime()}),this.myScroll.on("scroll",function(){var t=this.y,i=this.maxScrollY-t;e.down&&!e.isLoading&&t+e.downElHeight>=e.down.offset?e.updateDownState(1):e.down&&2!=e.down.state&&t<=0&&t+e.downElHeight0?e.updateDownState(0):e.up&&!e.isLoading&&3!=e.up.state&&i>=e.up.offset-e.upElHeight?e.updateUpState(1):e.up&&3!=e.up.state&&i=0&&e.updateUpState(0),e.$emit("scroll",this,e)}),this.myScroll.on("scrollEnd",function(){if(e.endPullTime=(new Date).getTime(),e.isShowToTop&&(e.isCanToTop=-this.y>=.5*e.scrollerMinHeight),e.$emit("scrollEnd",this,e),!(e.endPullTime-e.startPullTime<0))return e.endPullTime-e.startPullTime<200?void(this.y>-e.downElHeight?e.resizeIScrollPosition():this.maxScrollY<=this.y&&this.maxScrollY+e.upElHeight>this.y&&this.maxScrollY<-this.downElHeight-this.upElHeight&&e.resizeIScrollPosition(this.maxScrollY+e.upElHeight)):void(1==e.down.state?e.downRefreshEvent():1==e.up.state?e.upLoaddingEvent():this.y>-e.downElHeight?e.resizeIScrollPosition():this.maxScrollY<=this.y&&this.maxScrollY+e.upElHeight>this.y&&this.maxScrollY<-e.downElHeight-e.upElHeight&&e.resizeIScrollPosition(this.maxScrollY+e.upElHeight))}),this.$nextTick().then(function(){return t.myScrollRefresh()})},initMaxScroller:function(t){var e=this;return t>=0&&this.up&&3!==this.up.state&&this.myScroll.maxScrollY>=-this.downElHeight-this.upElHeight?(this.updateUpState(2),this.query(1).then(function(){return e.updateUpState(0),e.initMaxScroller(t-1)})):Promise.resolve()},initIScrollCacheData:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,s=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=this,r=function(t){return t>-a.downElHeight?t=-a.downElHeight:t0&&void 0!==arguments[0]&&arguments[0],i=this;return new Promise(function(s,a){if(e&&t.initDom(),i.myScroll&&i.myScroll.refresh(),t.imgResize&&t.$refs.scroller){var r=t,o=-1,n=-1,l=t.$refs.scroller.querySelectorAll("img[lazy='loading']").length;if(0===l)return void s();n=setTimeout(function(){n=-1,s()},500),Array.from(t.$refs.scroller.querySelectorAll("img[lazy='loading']")).forEach(function(t,e){t.onload=function(){"loading"!==this.getAttribute("lazy")&&(--l,-1==o&&(o=setTimeout(function(){r.myScroll&&r.myScroll.refresh(),o=-1,l<=0&&-1!=n&&(clearTimeout(n),n=-1,s())},200)))}})}else s()})},resizeIScrollPosition:function(t){this.myScroll&&(t?t0&&void 0!==arguments[0])||arguments[0],i=this.$refs.scroller.offsetHeight-(this.iScrollOptions.startY<0?this.iScrollOptions.startY:-1);return i>this.scrollerMinHeight&&(this.scrollerMinHeight=i,this.$refs.scroller.querySelector(".list-pull-loading-scroller").style.minHeight=this.scrollerMinHeight+"px"),!1===e?void(this.myScroll&&this.myScroll.refresh()):this.isLoading?Promise.resolve(!1):this.$nextTick().then(function(){return t.downRefreshEvent()}).then(function(){t.myScroll.y!=-t.downElHeight&&t.myScroll.scrollTo(0,-t.downElHeight,0,r.default.utils.ease.quadratic),t.isCanToTop=!1})},downRefreshEvent:function(){var t=this;if(this.$emit("down",this.myScroll),this.updateUpState(0),this.updateDownState(2),!this.isLoading)return this.query(2).then(function(){t.$nextTick(function(){t.initDom(),t.myScroll.y>-t.downElHeight&&t.resizeIScrollPosition(),t.updateDownState(0),t.initMaxScroller(t.initMaxTimes-1)})})},upLoaddingEvent:function(){var t=this;if(this.$emit("up",this.myScroll),this.updateUpState(2),!this.isLoading){var e=this.myScroll.maxScrollY;this.query(1).then(function(){3!=t.up.state&&t.updateUpState(0),t.myScroll.maxScrollY>e&&t.resizeIScrollPosition(t.myScroll.maxScrollY+t.upElHeight)})}},updateDownState:function(t){this.down&&this.down.state!=t&&this.$set(this.down,"state",t),1!=this.directionY&&(this.directionY=1)},updateUpState:function(t){this.up&&this.up.state!=t&&this.$set(this.up,"state",t),-1!=this.directionY&&(this.directionY=-1)},gotoTop:function(){var t=this;if(this.isLoading)return void mui.toast("正在加载数据,请稍后操作!");this.$nextTick(function(){t.resizeIScrollPosition()})},touchEvent:function(t){this.isLoading&&(t.preventDefault(),t.stopPropagation())},destroy:function(){this.myScroll&&this.myScroll.destroy()}},destroyed:function(){this.myScroll&&this.myScroll.destroy()}}},function(e,i){e.exports=t},function(t,e){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGMAAABrCAYAAABjaDz4AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA4FpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo2NWMxNThjZS1lZTBjLTQ5Y2MtOGEyZS01NmNlNDRhNGMxMTEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QkUwOEQ3N0QyNjYxMTFFNzkwRDNBMEJDOEJCNzE5QTMiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QkUwOEQ3N0MyNjYxMTFFNzkwRDNBMEJDOEJCNzE5QTMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6N2YzMTA4MGItNDYyYy00ZjYzLTg3MjEtZGY0ZmEyMDc1NjIzIiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6NDc0N2Y5ODYtOWU5Yy0xMTc5LWE2ZDEtYTUz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"},function(t,e){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPgAAAEACAYAAACeZ7vLAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUY4ODQ3MzYzQjZEMTFFNzhFMERDN0ZDNkM2QUM4MTMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUY4ODQ3MzczQjZEMTFFNzhFMERDN0ZDNkM2QUM4MTMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5Rjg4NDczNDNCNkQxMUU3OEUwREM3RkM2QzZBQzgxMyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5Rjg4NDczNTNCNkQxMUU3OEUwREM3RkM2QzZBQzgxMyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvAfC5MAABT1SURBVHja7J0JcBRXesd7dJ/oGqELxGkEyEiyQUgGhAQ2G2MgMS47sb0OS3ldTpzaJJXddSqpxKnEcSq72XWlslVJbHazZSc+KLAhFZuYwzZIIMCAWARIGBAYkBFISEhCQghdk++5W/F4PJJG0oxmuuf3q/qXenp6WjPf63+/97rf+9rmcDg0AG+zadMmb+wmXNQ7nh08//zzQV0OIRyKEMCkEgIMDtYlgxBgcLAueYQAg4M1iRKVEQYMDtakWDSdMGBwsCZrRLMJAwYH62ETPSrKFGURDgwO1qLEqfZeTTgwOFiLP3ZafpRwjJ0wL404GjXBPsIIhmSe6DGn16uN2ryO0ExMDZ4oeln0E9ELhBC8zD+7HJdq+a8Iyxhr8DF85l7RS8Zyu+jfCSN4ie+KfsvN+u+J3hTtI0T0wcGczBe9NsR76qr6FtEUwoTBwXzcI9opihtmGzXxpFw0g3BhcDAPpUbTe6oH284UHdW+eREOMDgEIJNFr4o+1fQBLZ6SInpf9JFoGWEcnjBCABNIsqaPMVf3ttUFtZhx7OthQ2dE20UVolOiBsKMwWHijq94TZ/2uVb0pObdC2Uq28tpw+SXRS2iSFGEqIPwY3DwLX2iVk2/OKb0oqhAtEH0rChhHPv+tehvRfVu3rtL6OmDg384IfqhKFvTx1N0jvLzt0XrRN8fwtyAwSEAuCV6RdMHTu3z8DNdolWiDwkfBgdzoPrOD2r6FfWR2Cg6RMgwOJiLAdGPRX89zDZvibYSqtGhLrK9K7KP4jOJTsuxoj2j/J8fiH5B6MEN/yBKF/3ATb/7R4RnbAZ/cpyff2iUn7mLwWEYfmz0s3Oc1r0uaiI0NNHB/KgKwDlZgHr0zibCMvYaWM3pHs39yOmiPzSWuzX9XuRoOEbYYQQqjK6fqsmrRGcJydgN/tooP7PMyeDqbPtTwgg+4DXD4DsIBU10sB67jQqkklBgcLAeaoTbftERQoHBwZrs0vS0YIDBwYJUEAIMDtalihBgcLAu/YRgfDAfHHwCD7agBgcADA4AGBwAvGJwxxDLABBgjOUimxpZ9KBxcmglhADWMrhKVfspoQMIfGwOB61sAPrgAIDBAQCDAwAGBwAMDgAYHACDAwAGBwAMDgAYHAAwOABgcADA4AAYHAAwOABgcADA4ACAwQFgeHiyyRjYtGnThP0vnhAC1OCcTAEwuJ+xEwLA4NZlCiEADG5dHiQEgMGtSYaomDAABrcma0X3EAbA4NbkSVGOKIFQAAa3FtmiUk2/TfYdwgEY3Fr8SBRqLH+fcAAGtw5zRX/g9FrV4CWEBTC4+VG19q9EkU7rbKLX6YsDBjc3g0Ze6ua9eaItohjCBBjcfMSJ/muE/rZqqldo+pV1AAxukib506LfiL7rwfYLRSdF/ybKJ3zgC5jhNHaiRLNEqw2DPiRKH+U+IkQviDYazXZl9lOiPlEvIbYWEznNGIOPn25RjegL0QrD8Ou1r2+JeUK76BVV9qJbhBSGIdI46Q/QRJ9YukQ7RE8YNfp/eFgI1aIFop9jbvAA1UJMpQ/uXy6LntP0mWNXh9muxqj16wkZeIi6vjMVgwcG+zT9FtlZN++pZtbviVoJE3hIktH9m4HBA6s2V7PIbris/4VRgwN4ykZRtGgRBg8s6kR/5PT6ruhnhAVG6dHBY+hBDB54vCf62Fj+H1EjIYFRoKYazzaW7xdNx+CBx6vG3/8mFDAK1C3Xv3F6rYZAP4fBA489mn7Pu4JQwCh4Rvv2cOYfaPpFN49goMvE0K/p49O/JBTjw1ejwQLwAROTRD9xs17NRPw70Z9QgwcW2wnBhKKGAL+o6ZN/zNqtG2ros6rFV2HwwOIIIZhQ1Lj+f9LGcO84AHhshL626otv1jxI5InBJ45OQgAeoCYuvenBdsmafk2ngD649ftrYA3yNP2CrKfdCtWE3y/6U9GvqcEBApfHRQe00U8oUScDNcFpr+gBDA4QOCj/qSScH4m2iuLHsa8y0UFRlaZn8r1XFEoTHWDiUXO7VcbdpzT9gtp4n3qjbsMeFu3W9HkOah6EmsacisEBJh41J6Ha0F8YZlc5/DaIJo/S2L/U9PkNF+mDAwQmn2v6PXv1FBx1j7vZg8+ofANqSvILQ5lbQQ0OZkSN4lrn4bZq6NtwtyjPa9+c8efvmv1fjf64+t6/M8R2akTkEs2DhCEYHMxIkaanMPKEkR7bPCcAf1+Tpid4+KlRszvTYxjfo2xAGBzMyL+IykfY5nXj78va8Omzrgbob3SI/lzTb4O94LRe1fDHPd0JBgczckQbeejvoMHVfPxTJv6tahDLMk1P0Klq71ElDOEiG0Bg0+tUg6tRbtcwOIC1qBQd0vT03BoGB7Ae72ljmJGIwQHMU4ufx+AA1uScNoYn4GBwAHNwZywfwuBgVXpc/pqd7rF8iPvgYFWmafqsrcvBHAQMDlbleqB9IX9kArI5HA4OBQBq8ODBV7m3IXBqNgwOrqinO0YRhnGhpm32EgYMHkioZHjq+VALCMW4URlI9ml6FpNjhMP3cJtseP5M0yffY27voB6mpx6Bq7KHriAcGNyfTBX9I2HwCer21a84/jC4P/lt40AE3zBTtIgwYHB/kUUIfE42IcDg/sJGCHxOBCHA4ACAwQEAgwNgcACwAoxk8xHZ2dknS0tL+6Kjo3PkZV9HR8fnH3/8cfKNGzfuMePvmT179rGlS5dGREZGqu/f3dbWdmbPnj2Zra2t0yltavCgIj8/v/Lhhx/OFXPfLy9jRQnx8fFF69evz5o2bVq12X5PcXFxxcqVKxeKudUD6tWY/KTExMQlTzzxRHJaWtrnlDgGDxrE1DeLioryNX1Ypisxq1atSg4JCTHNhItJkyZdzcvLU4//cXfbcNKaNWs4hjB48DBv3rxaTX/cjPuAh4RMzcrKOmOW31NQUFCnDXO/OiwsbI7dbq+j5DF4UCBN176RtklKSuo0UQ3uyW9up+QxeFDQ1tY24oXLmzdvxpvo93iyTSIlj8GDgpqamnu1EfJX37p1K9ksv6e1tXXYCTe9vb1nmpubZ1HyGDwouHv3buKhQ4dqtGEylzz00EMXzfBbbDbbQFFR0XC1c+uHH37IrVYMHlycOnXqATnwz3V2dh5xOBw3NJfc3Ha7fUlGRkZtoP+OwsLCyrCwsLkuq7vkN12TWnv/5s2bu8x6Xz9Y4OzrIxoaGnLfeeedr5YXLFhw6AHB6e3Q1atXh73xxhs9AwMDATmjKj4+vqGgoMA1k03v1q1bm4zBLRmUMjU46DV6cU9PzzceQq9uLz3yyCOHArRp3r9+/XrV8kh0OWkdZOQaBgc3npEme7RrUz0zM7NUasnKQPuya9eurYyKisp3XictjYbdu3cvpCgxOLhB+qyzz58/f9B1/eLFiwvVOO9A+Z6lpaXlGRkZy11WD3z66afXpRUSR0licBiCvXv3lnZ1dVW5rI5YuXLl/Dlz5hwNBHPn5OSUuq6/fPlyxcWLF++nBDE4jNBU37Jlyz39/f2ut8liysrKCqQ23++XgyAkpG/dunVuza3uBEjTvISiw+DgAdLMnfT++++HqVtNLm+FS3+85LHHHtsfFhZ2e6K+j7pa/swzz5yWZvm3zH337t1TckK6V75rKCWHwcFD2trast977727YpxvPQHTbreXbNy4sWXevHmf+bjW7lHTQJ966qnYqKioAjcnolPvvvvutL6+vhhKDIPDKFG3mzZv3jwgzfULbsyXXVJSUrRhw4bqrKys017+1w518nj22Wev5eXlqYtpCa4bdHV1HXv77bdnqtYGJWVuGOjiRzo6OjLfeuut9scff/xobGxsoev76lbVmjVrVFO5+sSJE521tbUFvb29sWP5XzExMU3SBTgj5p4aGhpaNJT5r1y5Ur5r164SmuUYHLyAmDdBastFy5YtK58/f/5iTc+Y8g0iIyPzi4qKNNEdVbuKCW/X19dPamxsnCqv7a7bq4EqcXFxjdKvvjpt2rTb0gpIiYiImC9vlQ5ZrTscjeXl5VfOnTtXRqlgcPAutgMHDpTW1NRckhq7WWrboR7pE63emzt3rqY0eI4Qc7aI+g1zR4hSZDHT0EgMNDU1Hdi5c+eC7u7uQooCg4MP++XSZJ+uBr5IHzw6PDw814OPRYqhM0Wj7otLF+HIJ598kiQGX070MThMEHV1dYtEKjNrdWFhYUdKSopKduitC163pGl/orKyMrO5ubmIaGNw8BPS184XqYkpd3JzcytzcnJsCQkJs6S2ThvNfvr7+y+1tLTU19bWRl24cCFPXlNjY3AIFPr6+qKrq6uXir56HRcXd01dQLPb7V3x8fED0i8PDQkJURNC1MUyx+3btwfa29tDb9y4EX/9+vVp0reeLh+bTiQxOJiAzs7OjPPnzysRDBgWBroAYHAAwOAAgMEBAIMDAAYHAAwOgMEBAIMDAAYHAAwOABgcADA4AGBwAAwOABgc/IvNZhtYuHDhgUB4vhkEFiR8sACFhYWV6rFHsuhob28/29jYmENUgBrcCgUYEtKXl5eXPViZl5aW3iQqgMEtQm5u7lEx+bTB14mJiYWiy0QGMLg1mudJrt2usrKyK0QGMLjJmT17dlVYWNhc1/WTJ09eFBsb20iEAIObmCVLlgz1gMDokpKSM0QIMLhJyczMrHH3XO9BsrOz74uMjGwnUhgcTEhpaWnnCJskFBcXnyBSGBxMRkpKysX4+PgRnwQ6Z86cuaGhod1EDIODWQosJKR39erVrZ6UnXqG2Zo1a44QteCFkWzmMHVfQkLClzNmzPgyPz8/JTw8fKGnn01PT1/+9NNPH62qqnI0NDRM6ejoyFDeJ6oYHCaYqKiom3a7/WpaWlp7ampqf1JSUlRMTEyqNLOnavrDA6ePZb9xcXGF0mcffHm7r6+vvrOz86bQ09TUFNHY2Jjc0tIyVdbHUgoYHLxMcXFxxYIFC3KlSZ0iL5N9/O9i1b3zxMRENepNmzlz5v+/MTAwcGX37t1tV65cyaNU6IODl8jNzZ1imNvfXYHswsLCW5QIBgcvcu7cufoA+So9x48fp5mOwcGb7N+/v1Saxfv8/DX6Kysrj3/xxRf3USIYHLzMzp07y65evVruL3MfPnz4s5qammJKAoODj9ixY8fya9euVUzwv3UcO3bs0MmTJ5dQAhgcfIvtgw8+KGlubt4/UeaWPvcB0TJCj8Fhgky+ffv2pS0tLQd8be7Tp0/vl9q7hJBjcJjINrPDEbJt27YH2traDvrqf9TW1lYcPHhwOdHG4OAfk4du3bq1qKen57S39339+vWKAwcOlBJlDA5+NvmuXbu8XUb9e/bsySW6GBwCAKltvZoCub+/v/7OnTspRBaDQwAQHR3d4s392Wy2CKKKwSFAmDx5coNXCzwkJCM8PPw2kcXgEACkp6d7e/KHzW63kzcdg0MgkJaW5ouTRiuRxeAQACQkJEzywUmjl8hicAgAIiMjs7y9z+Tk5BgiGxyQ0SWAiYqKarXZbKkjbDbQ2tp66NSpU2ERERH9BQUFsfK5/OE+EBMTk0Z0MTj4mdTUVJUIImmo97u7u0/s2rUrqrGxcengupMnT2o5OTlHli1blhIaGjrLbbMtJGSKSqfc398fRZQxOPiJjIwMt08mEWNeKC8vb62rq1vk7v2zZ88uPn/+fN/ixYtVrrd5bloBoSkpKReamprmEGUMDv6rwQecXzscjsbq6upzx44de2BgYGDWsO32gYGww4cPL6+qqrq9YsWKfdOnTy+S1dGD76enpzdjcAwOfkT61rasrK+usd25dOnSZ3v37i3s7e0d1fRO2T529+7dZfHx8Q2rVq2qstvtKrGDTfYdR4QxOPiRgwcPltTX159sbm6ecufOnbLx7KujoyNz27ZtmWLwC+Hh4T3Xrl0jNTIGBz9jE4N71YhysphFWIMH7oMDYHAAwOAAgMEBAIMDAAYHAAwOgMEBAIMDAAY3Of2EwOd0EwIM7i8uEQKfU0cIMLi/2C66RRh8xgnRScKAwf2FeuDAcyISFPomthsIg+9hNtnwbBVdEf2lqFBzSpgAY0JlqNkj+ntRPeHA4IHAZ6JHCQOYEZvD4SAKAPTBAQCDAwAGBwAMDgAYHAAwOAAGBwAMDgAYHAAwOABgcADA4ACAwQEwOACYFtPPB7969SqlCMOSlZWFwcGnRIhSREmiZONvoihBFGcsxxiaZKyLNN5XxBr7CDXedybS+Jw7ukR3XdapPHMqY2yP6Laxrt3YrtN4/47xXpuxrt1YbhXdNP62GPsADG5ZlBGzVSUhyjSW00TposmiVON1kp++X4wb83vzuyijN4puiJpE143XKs1Vg2pgGcudHCoYPFBRps0RzRLNdFFCkMcmydDcEbZTLYCLLrogOmucAACDT8jBer9ooWi+IXXgxhOacaNOhPcZcqVD9Lmo1lCV6LjROgAMPiZUX7ZAVCJaIlokmsHh4BfUCbTQkDNfGGavFO3X9DzqPG0Ggw+JamI/IlotWkbNHPDMMPS4U02vzP6/hi4QopExfVbVEW6TKVP/vuh3RfMobktxRtPz1v/nSGYP5ttkVjS4zaipXxQtN16DdVEHcIXoZ0bN7sDgX2O1kWyloqOiD41lzB0ElZRR1qrMjxnLYEGDvyzaq+lXwSE4ud84Bl4mFNYy+A9FL1Fjg3EMvGQcExjcIr/jRYoSOCas3wcHAAsa/OcUJbjwKiGwjsFVYb6iublFAkGHwzgWOOlbrImuLqysEP2GYg1aVNmvNI4FsGAfvFzTb5OtNZap0YOjxlZlvc4o+32E5GvCLFrgOwypoarfEz2hjTylEcyFmmq6RfSmxrj0IbH6WHRnZmv6EFYlNYOMySbmQk02OSj6yDh513n6QcaiB4fBXVsug9NFl2r6CCimiwYWarqomhfuPF20byw7wuDBZ3B3qFxp92kkfPBHzeya8EFdLLvprX9A0kXQjAPqE0POZBtGd5eyaRJh8wiVyNFdyiZlbFI2YXC/cmWYg1AZfIohVU1M1fQkixmannDRrvk36aKvGUy62KzpiRevGa/rNT3h4peGbnEYYXCz1kyDTcvhGEybnKx9nTY5QfM8bbJ6HW4ozmXfapuhbncOaHrCQ2dUhtNeQ4PZTj1Jm9yufZ02WYm0ySbg/wQYAC3PZfGD75flAAAAAElFTkSuQmCC"}])}); -------------------------------------------------------------------------------- /demo/data/list1.json: -------------------------------------------------------------------------------- 1 | { 2 | "result": { 3 | "totalCount": 63, 4 | "items": [ 5 | { 6 | "isRecommendedToHome": true, 7 | "title": null, 8 | "name": "程程10050工作室", 9 | "imgUrl": null, 10 | "userName": "程程10050", 11 | "userPic": "/upload/201712/1712120004705710405152525797.png", 12 | "introduction": "国家一级公共营养师简介、膳食纤维的主导者就是程程、美容养颜的提倡者", 13 | "weChatQRCodeImgUrl": null, 14 | "honor": null, 15 | "goodAtDomain": "膳食解读222,33333", 16 | "fansQty": 18, 17 | "collegeArticleQty": 6, 18 | "collegeCourseQty": 25, 19 | "userMessageQty": 0, 20 | "isSubscribe": false, 21 | "isOwnHealthCollege": false, 22 | "creationTime": "2017-12-06T17:14:09.537+08:00", 23 | "tags": null, 24 | "isVIP": false, 25 | "id": "51eaac4f-66d5-4816-8f97-9acf64bf9ed1" 26 | }, { 27 | "isRecommendedToHome": true, 28 | "title": null, 29 | "name": "我的工作室", 30 | "imgUrl": null, 31 | "userName": "1374036", 32 | "userPic": "/upload/201711/d55d3eca-8616-4b83-888f-4b89d8d4e3f0.png", 33 | "introduction": null, 34 | "weChatQRCodeImgUrl": null, 35 | "honor": null, 36 | "goodAtDomain": "wf", 37 | "fansQty": 8, 38 | "collegeArticleQty": 0, 39 | "collegeCourseQty": 0, 40 | "userMessageQty": 0, 41 | "isSubscribe": true, 42 | "isOwnHealthCollege": false, 43 | "creationTime": "2017-12-13T14:05:08.397+08:00", 44 | "tags": null, 45 | "isVIP": false, 46 | "id": "2380fa4f-f07c-4c80-8639-68392b89b776" 47 | }, { 48 | "isRecommendedToHome": true, 49 | "title": null, 50 | "name": "改个名字看看", 51 | "imgUrl": null, 52 | "userName": "严萍", 53 | "userPic": "/upload/201710/1710180007305710099101246377", 54 | "introduction": "营养搭配,膳食补充,健康减肥,身体调理", 55 | "weChatQRCodeImgUrl": null, 56 | "honor": null, 57 | "goodAtDomain": "增肥2", 58 | "fansQty": 9, 59 | "collegeArticleQty": 17, 60 | "collegeCourseQty": 6, 61 | "userMessageQty": 0, 62 | "isSubscribe": false, 63 | "isOwnHealthCollege": false, 64 | "creationTime": "2017-11-21T17:04:39.457+08:00", 65 | "tags": null, 66 | "isVIP": false, 67 | "id": "1b779ac9-b89c-4606-a80c-ad2add49902f" 68 | }, { 69 | "isRecommendedToHome": true, 70 | "title": null, 71 | "name": "程管理师的工作室", 72 | "imgUrl": null, 73 | "userName": "程管理师", 74 | "userPic": "/upload/201712/1712140004105710359111241425.jpg", 75 | "introduction": "中国最具权威的膳食管理专家", 76 | "weChatQRCodeImgUrl": null, 77 | "honor": null, 78 | "goodAtDomain": "膳食营养,养生,美容养颜", 79 | "fansQty": 21, 80 | "collegeArticleQty": 9, 81 | "collegeCourseQty": 4, 82 | "userMessageQty": 0, 83 | "isSubscribe": true, 84 | "isOwnHealthCollege": false, 85 | "creationTime": "2017-11-27T11:05:56.537+08:00", 86 | "tags": null, 87 | "isVIP": false, 88 | "id": "eb9ef6b4-6f55-4e42-9185-289d3925c881" 89 | }, { 90 | "isRecommendedToHome": true, 91 | "title": null, 92 | "name": "5842", 93 | "imgUrl": null, 94 | "userName": "5842", 95 | "userPic": "/upload/201801/f2d84535-5be5-4236-8313-e410ebcbf7e1.png", 96 | "introduction": null, 97 | "weChatQRCodeImgUrl": null, 98 | "honor": null, 99 | "goodAtDomain": "", 100 | "fansQty": 4, 101 | "collegeArticleQty": 3, 102 | "collegeCourseQty": 0, 103 | "userMessageQty": 0, 104 | "isSubscribe": false, 105 | "isOwnHealthCollege": false, 106 | "creationTime": "2018-01-11T15:04:17.923+08:00", 107 | "tags": null, 108 | "isVIP": false, 109 | "id": "1915ce49-d9ca-479a-a547-412312facbad" 110 | }, { 111 | "isRecommendedToHome": true, 112 | "title": null, 113 | "name": "5835", 114 | "imgUrl": null, 115 | "userName": "5835", 116 | "userPic": "/upload/201712/973b9c88-aa51-4772-8238-a7b2ade63966.png", 117 | "introduction": null, 118 | "weChatQRCodeImgUrl": null, 119 | "honor": null, 120 | "goodAtDomain": "", 121 | "fansQty": 4, 122 | "collegeArticleQty": 0, 123 | "collegeCourseQty": 0, 124 | "userMessageQty": 0, 125 | "isSubscribe": false, 126 | "isOwnHealthCollege": false, 127 | "creationTime": "2018-01-04T15:18:41.007+08:00", 128 | "tags": null, 129 | "isVIP": false, 130 | "id": "eaa8e23e-789c-4ffe-b628-6c521f02bc54" 131 | }, { 132 | "isRecommendedToHome": true, 133 | "title": null, 134 | "name": "华文15", 135 | "imgUrl": null, 136 | "userName": "华文15", 137 | "userPic": "/upload/201708/1708280003805710153134056142.png", 138 | "introduction": "国家一级营养师,", 139 | "weChatQRCodeImgUrl": null, 140 | "honor": null, 141 | "goodAtDomain": "", 142 | "fansQty": 6, 143 | "collegeArticleQty": 0, 144 | "collegeCourseQty": 0, 145 | "userMessageQty": 0, 146 | "isSubscribe": true, 147 | "isOwnHealthCollege": false, 148 | "creationTime": "2017-12-14T16:36:12.24+08:00", 149 | "tags": null, 150 | "isVIP": false, 151 | "id": "614bbd69-b658-4cee-8c0b-cd2482e093c4" 152 | }, { 153 | "isRecommendedToHome": false, 154 | "title": null, 155 | "name": "xuebin", 156 | "imgUrl": null, 157 | "userName": "xuebin", 158 | "userPic": "/upload/201709/1709200028105710207175856480.png", 159 | "introduction": null, 160 | "weChatQRCodeImgUrl": null, 161 | "honor": null, 162 | "goodAtDomain": "青少年心理咨询", 163 | "fansQty": 5, 164 | "collegeArticleQty": 2, 165 | "collegeCourseQty": 0, 166 | "userMessageQty": 0, 167 | "isSubscribe": false, 168 | "isOwnHealthCollege": false, 169 | "creationTime": "2017-12-13T14:05:07.303+08:00", 170 | "tags": null, 171 | "isVIP": false, 172 | "id": "79a07bab-38e5-4a66-8d4b-00e07e786b08" 173 | }, { 174 | "isRecommendedToHome": false, 175 | "title": null, 176 | "name": "赵无极", 177 | "imgUrl": null, 178 | "userName": "赵无极", 179 | "userPic": "/upload/201801/f1fb4382-933e-4158-b428-0996e17f45ad.png", 180 | "introduction": null, 181 | "weChatQRCodeImgUrl": null, 182 | "honor": null, 183 | "goodAtDomain": "", 184 | "fansQty": 3, 185 | "collegeArticleQty": 1, 186 | "collegeCourseQty": 0, 187 | "userMessageQty": 0, 188 | "isSubscribe": false, 189 | "isOwnHealthCollege": false, 190 | "creationTime": "2018-01-15T17:03:14.837+08:00", 191 | "tags": null, 192 | "isVIP": false, 193 | "id": "ae0aab9d-69a3-4c42-a5e4-307181ea1793" 194 | }, { 195 | "isRecommendedToHome": false, 196 | "title": null, 197 | "name": "5841", 198 | "imgUrl": null, 199 | "userName": "5841", 200 | "userPic": "/upload/201801/f29213f4-8ade-4b55-8fc3-4d1deb4747da.png", 201 | "introduction": null, 202 | "weChatQRCodeImgUrl": null, 203 | "honor": null, 204 | "goodAtDomain": "", 205 | "fansQty": 4, 206 | "collegeArticleQty": 0, 207 | "collegeCourseQty": 0, 208 | "userMessageQty": 0, 209 | "isSubscribe": false, 210 | "isOwnHealthCollege": false, 211 | "creationTime": "2018-01-11T16:44:13.97+08:00", 212 | "tags": null, 213 | "isVIP": false, 214 | "id": "a98d5c84-ced7-4af4-bd6f-2ed7dce9e5de" 215 | }, { 216 | "isRecommendedToHome": false, 217 | "title": null, 218 | "name": "adfasd", 219 | "imgUrl": null, 220 | "userName": "adfasd", 221 | "userPic": "/upload/201709/3d4cc5af-4625-4205-adae-5ae45b439f09.png", 222 | "introduction": null, 223 | "weChatQRCodeImgUrl": null, 224 | "honor": null, 225 | "goodAtDomain": "test", 226 | "fansQty": 4, 227 | "collegeArticleQty": 0, 228 | "collegeCourseQty": 2, 229 | "userMessageQty": 0, 230 | "isSubscribe": false, 231 | "isOwnHealthCollege": false, 232 | "creationTime": "2018-01-08T13:17:59.46+08:00", 233 | "tags": null, 234 | "isVIP": false, 235 | "id": "e94b1ffc-35c7-4d96-b06b-ca9744487c4e" 236 | }, { 237 | "isRecommendedToHome": false, 238 | "title": null, 239 | "name": "佘学玮", 240 | "imgUrl": null, 241 | "userName": "佘学玮", 242 | "userPic": "/upload/201712/b186911b-08be-4e57-af96-00b366913698.png", 243 | "introduction": null, 244 | "weChatQRCodeImgUrl": null, 245 | "honor": null, 246 | "goodAtDomain": "", 247 | "fansQty": 4, 248 | "collegeArticleQty": 0, 249 | "collegeCourseQty": 0, 250 | "userMessageQty": 0, 251 | "isSubscribe": false, 252 | "isOwnHealthCollege": false, 253 | "creationTime": "2018-01-08T11:08:56.663+08:00", 254 | "tags": null, 255 | "isVIP": false, 256 | "id": "e57aca9b-baf3-41ee-888a-24eb513a2645" 257 | }, { 258 | "isRecommendedToHome": false, 259 | "title": null, 260 | "name": "蒋测试", 261 | "imgUrl": null, 262 | "userName": "蒋测试", 263 | "userPic": "/upload/201712/ac99139f-904f-499c-8d8a-093fee393b79.png", 264 | "introduction": null, 265 | "weChatQRCodeImgUrl": null, 266 | "honor": null, 267 | "goodAtDomain": "幼儿调养", 268 | "fansQty": 3, 269 | "collegeArticleQty": 0, 270 | "collegeCourseQty": 0, 271 | "userMessageQty": 0, 272 | "isSubscribe": false, 273 | "isOwnHealthCollege": false, 274 | "creationTime": "2017-12-22T16:31:09.697+08:00", 275 | "tags": null, 276 | "isVIP": false, 277 | "id": "7f33904e-7b72-4614-9b02-7a30cb1f9a11" 278 | }, { 279 | "isRecommendedToHome": false, 280 | "title": null, 281 | "name": "蒋测试", 282 | "imgUrl": null, 283 | "userName": "蒋测试", 284 | "userPic": "/upload/201712/ac99139f-904f-499c-8d8a-093fee393b79.png", 285 | "introduction": null, 286 | "weChatQRCodeImgUrl": null, 287 | "honor": null, 288 | "goodAtDomain": "幼儿调养", 289 | "fansQty": 3, 290 | "collegeArticleQty": 0, 291 | "collegeCourseQty": 0, 292 | "userMessageQty": 0, 293 | "isSubscribe": false, 294 | "isOwnHealthCollege": false, 295 | "creationTime": "2017-12-22T16:31:08.317+08:00", 296 | "tags": null, 297 | "isVIP": false, 298 | "id": "5893a46a-663d-47cc-af8d-c5a0d45353fa" 299 | }, { 300 | "isRecommendedToHome": false, 301 | "title": null, 302 | "name": "1340233", 303 | "imgUrl": null, 304 | "userName": "1340233", 305 | "userPic": "/upload/201711/e2f533c5-5db3-48f2-bf1f-5f713e9903d6.png", 306 | "introduction": null, 307 | "weChatQRCodeImgUrl": null, 308 | "honor": null, 309 | "goodAtDomain": "", 310 | "fansQty": 1, 311 | "collegeArticleQty": 0, 312 | "collegeCourseQty": 0, 313 | "userMessageQty": 0, 314 | "isSubscribe": false, 315 | "isOwnHealthCollege": false, 316 | "creationTime": "2017-12-13T14:05:07.9+08:00", 317 | "tags": null, 318 | "isVIP": false, 319 | "id": "a5907f36-afb4-4429-b9db-1ac41c1af90a" 320 | }, { 321 | "isRecommendedToHome": false, 322 | "title": null, 323 | "name": "13100000010", 324 | "imgUrl": null, 325 | "userName": "13100000010", 326 | "userPic": "/upload/201712/250f4ca3-8c84-46d9-b5f9-fe6a770a35bf.png", 327 | "introduction": null, 328 | "weChatQRCodeImgUrl": null, 329 | "honor": null, 330 | "goodAtDomain": "", 331 | "fansQty": 2, 332 | "collegeArticleQty": 0, 333 | "collegeCourseQty": 0, 334 | "userMessageQty": 0, 335 | "isSubscribe": false, 336 | "isOwnHealthCollege": false, 337 | "creationTime": "2017-12-13T14:05:06.873+08:00", 338 | "tags": null, 339 | "isVIP": false, 340 | "id": "71c2d031-74b4-46dd-832f-7d23861ce2ac" 341 | }, { 342 | "isRecommendedToHome": false, 343 | "title": null, 344 | "name": "13109", 345 | "imgUrl": null, 346 | "userName": "13109", 347 | "userPic": "/upload/201712/e3c49c56-942a-41d9-bdb5-91cd79f9a10a.png", 348 | "introduction": null, 349 | "weChatQRCodeImgUrl": null, 350 | "honor": null, 351 | "goodAtDomain": "", 352 | "fansQty": 2, 353 | "collegeArticleQty": 0, 354 | "collegeCourseQty": 0, 355 | "userMessageQty": 0, 356 | "isSubscribe": false, 357 | "isOwnHealthCollege": false, 358 | "creationTime": "2017-12-13T14:05:06.09+08:00", 359 | "tags": null, 360 | "isVIP": false, 361 | "id": "ba039d5b-5c8c-4bef-88fb-99a8e8d163cf" 362 | }, { 363 | "isRecommendedToHome": false, 364 | "title": null, 365 | "name": "1310000007", 366 | "imgUrl": null, 367 | "userName": "1310000007", 368 | "userPic": "/upload/201712/6d167abb-96f2-4b4c-9cf6-e8e0f989b944.png", 369 | "introduction": null, 370 | "weChatQRCodeImgUrl": null, 371 | "honor": null, 372 | "goodAtDomain": "", 373 | "fansQty": 0, 374 | "collegeArticleQty": 0, 375 | "collegeCourseQty": 0, 376 | "userMessageQty": 0, 377 | "isSubscribe": false, 378 | "isOwnHealthCollege": false, 379 | "creationTime": "2017-12-13T14:05:05.15+08:00", 380 | "tags": null, 381 | "isVIP": false, 382 | "id": "ae478ce5-1fc6-4c31-aab0-af7029af33d1" 383 | }, { 384 | "isRecommendedToHome": false, 385 | "title": null, 386 | "name": "1310000006", 387 | "imgUrl": null, 388 | "userName": "1310000006", 389 | "userPic": "/upload/201712/c4f9107f-e7d4-4c84-b861-f47d863e27eb.png", 390 | "introduction": null, 391 | "weChatQRCodeImgUrl": null, 392 | "honor": null, 393 | "goodAtDomain": "", 394 | "fansQty": 0, 395 | "collegeArticleQty": 0, 396 | "collegeCourseQty": 0, 397 | "userMessageQty": 0, 398 | "isSubscribe": false, 399 | "isOwnHealthCollege": false, 400 | "creationTime": "2017-12-13T14:05:04.613+08:00", 401 | "tags": null, 402 | "isVIP": false, 403 | "id": "285dae01-3319-499c-9e81-6e74996c0527" 404 | }, { 405 | "isRecommendedToHome": false, 406 | "title": null, 407 | "name": "13406", 408 | "imgUrl": null, 409 | "userName": "13406", 410 | "userPic": "/upload/201712/530cfbce-1ada-4bbb-8a74-a650b24fc0c9.png", 411 | "introduction": null, 412 | "weChatQRCodeImgUrl": null, 413 | "honor": null, 414 | "goodAtDomain": "", 415 | "fansQty": 0, 416 | "collegeArticleQty": 0, 417 | "collegeCourseQty": 0, 418 | "userMessageQty": 0, 419 | "isSubscribe": false, 420 | "isOwnHealthCollege": false, 421 | "creationTime": "2017-12-13T14:05:04.077+08:00", 422 | "tags": null, 423 | "isVIP": false, 424 | "id": "d0c99d9f-2990-46fc-a42d-f23c29d0289b" 425 | }, { 426 | "isRecommendedToHome": false, 427 | "title": null, 428 | "name": "13105", 429 | "imgUrl": null, 430 | "userName": "13105", 431 | "userPic": "/upload/201712/3566f121-93ca-4920-8058-623f7a8ef551.png", 432 | "introduction": null, 433 | "weChatQRCodeImgUrl": null, 434 | "honor": null, 435 | "goodAtDomain": "", 436 | "fansQty": 1, 437 | "collegeArticleQty": 0, 438 | "collegeCourseQty": 0, 439 | "userMessageQty": 0, 440 | "isSubscribe": false, 441 | "isOwnHealthCollege": false, 442 | "creationTime": "2017-12-13T14:05:03.003+08:00", 443 | "tags": null, 444 | "isVIP": false, 445 | "id": "c6b5df3c-f62f-4c60-ae8d-7222a93a944f" 446 | }, { 447 | "isRecommendedToHome": false, 448 | "title": null, 449 | "name": "13104", 450 | "imgUrl": null, 451 | "userName": "13104", 452 | "userPic": "/upload/201712/4e0dd003-a9e4-4a9c-bb89-8093640eb8b9.png", 453 | "introduction": null, 454 | "weChatQRCodeImgUrl": null, 455 | "honor": null, 456 | "goodAtDomain": "", 457 | "fansQty": 0, 458 | "collegeArticleQty": 0, 459 | "collegeCourseQty": 0, 460 | "userMessageQty": 0, 461 | "isSubscribe": false, 462 | "isOwnHealthCollege": false, 463 | "creationTime": "2017-12-13T14:05:02.573+08:00", 464 | "tags": null, 465 | "isVIP": false, 466 | "id": "e2bcc290-9c5e-4ecc-8cff-339cd275d8b1" 467 | }, { 468 | "isRecommendedToHome": false, 469 | "title": null, 470 | "name": "13103", 471 | "imgUrl": null, 472 | "userName": "13103", 473 | "userPic": "/upload/201712/1712110009305710219193613515.png", 474 | "introduction": null, 475 | "weChatQRCodeImgUrl": null, 476 | "honor": null, 477 | "goodAtDomain": "", 478 | "fansQty": 0, 479 | "collegeArticleQty": 0, 480 | "collegeCourseQty": 0, 481 | "userMessageQty": 0, 482 | "isSubscribe": false, 483 | "isOwnHealthCollege": false, 484 | "creationTime": "2017-12-13T14:05:02.183+08:00", 485 | "tags": null, 486 | "isVIP": false, 487 | "id": "f884e5a0-d9ed-460c-be44-f4afa6a4b145" 488 | }, { 489 | "isRecommendedToHome": false, 490 | "title": null, 491 | "name": "13102", 492 | "imgUrl": null, 493 | "userName": "13102", 494 | "userPic": "/upload/201712/41237a2b-2b80-4945-a10a-8c63cc550836.png", 495 | "introduction": null, 496 | "weChatQRCodeImgUrl": null, 497 | "honor": null, 498 | "goodAtDomain": "", 499 | "fansQty": 0, 500 | "collegeArticleQty": 0, 501 | "collegeCourseQty": 0, 502 | "userMessageQty": 0, 503 | "isSubscribe": false, 504 | "isOwnHealthCollege": false, 505 | "creationTime": "2017-12-13T14:05:01.793+08:00", 506 | "tags": null, 507 | "isVIP": false, 508 | "id": "02a982d7-0710-4e55-91c2-faa3dad45ef7" 509 | }, { 510 | "isRecommendedToHome": false, 511 | "title": null, 512 | "name": "1310001", 513 | "imgUrl": null, 514 | "userName": "1310001", 515 | "userPic": "/upload/201712/e3424b44-09a8-432b-81cc-a014868fbdc0.png", 516 | "introduction": null, 517 | "weChatQRCodeImgUrl": null, 518 | "honor": null, 519 | "goodAtDomain": "", 520 | "fansQty": 0, 521 | "collegeArticleQty": 0, 522 | "collegeCourseQty": 0, 523 | "userMessageQty": 0, 524 | "isSubscribe": false, 525 | "isOwnHealthCollege": false, 526 | "creationTime": "2017-12-13T14:05:01.227+08:00", 527 | "tags": null, 528 | "isVIP": false, 529 | "id": "32037489-c085-4fb8-8281-b0f06a236b9a" 530 | }, { 531 | "isRecommendedToHome": false, 532 | "title": null, 533 | "name": "李宗", 534 | "imgUrl": null, 535 | "userName": "李宗", 536 | "userPic": "/upload/201712/5870192a-8b01-410a-883e-4c0c491c3554.png", 537 | "introduction": null, 538 | "weChatQRCodeImgUrl": null, 539 | "honor": null, 540 | "goodAtDomain": "", 541 | "fansQty": 0, 542 | "collegeArticleQty": 0, 543 | "collegeCourseQty": 0, 544 | "userMessageQty": 0, 545 | "isSubscribe": false, 546 | "isOwnHealthCollege": false, 547 | "creationTime": "2017-12-13T14:05:00.643+08:00", 548 | "tags": null, 549 | "isVIP": false, 550 | "id": "6bb67cd6-36f7-4c8f-94d9-4d21fc449e7c" 551 | }, { 552 | "isRecommendedToHome": false, 553 | "title": null, 554 | "name": "13400000981", 555 | "imgUrl": null, 556 | "userName": "13400000981", 557 | "userPic": null, 558 | "introduction": null, 559 | "weChatQRCodeImgUrl": null, 560 | "honor": null, 561 | "goodAtDomain": "", 562 | "fansQty": 0, 563 | "collegeArticleQty": 0, 564 | "collegeCourseQty": 0, 565 | "userMessageQty": 0, 566 | "isSubscribe": false, 567 | "isOwnHealthCollege": false, 568 | "creationTime": "2017-12-13T14:05:00.087+08:00", 569 | "tags": null, 570 | "isVIP": false, 571 | "id": "c4e97228-f477-4f61-947c-75d1f815960e" 572 | }, { 573 | "isRecommendedToHome": false, 574 | "title": null, 575 | "name": "1340853", 576 | "imgUrl": null, 577 | "userName": "1340853", 578 | "userPic": "/upload/201712/271532da-3c71-4544-ae16-d2cca4a94b6d.png", 579 | "introduction": null, 580 | "weChatQRCodeImgUrl": null, 581 | "honor": null, 582 | "goodAtDomain": "", 583 | "fansQty": 0, 584 | "collegeArticleQty": 0, 585 | "collegeCourseQty": 0, 586 | "userMessageQty": 0, 587 | "isSubscribe": false, 588 | "isOwnHealthCollege": false, 589 | "creationTime": "2017-12-13T14:04:59.73+08:00", 590 | "tags": null, 591 | "isVIP": false, 592 | "id": "a7944b26-d902-48f8-b364-227be920245a" 593 | }, { 594 | "isRecommendedToHome": false, 595 | "title": null, 596 | "name": "1340863", 597 | "imgUrl": null, 598 | "userName": "1340863", 599 | "userPic": "/upload/201712/ffe436a0-c988-4091-94b9-07ccb132733a.png", 600 | "introduction": null, 601 | "weChatQRCodeImgUrl": null, 602 | "honor": null, 603 | "goodAtDomain": "", 604 | "fansQty": 0, 605 | "collegeArticleQty": 0, 606 | "collegeCourseQty": 0, 607 | "userMessageQty": 0, 608 | "isSubscribe": false, 609 | "isOwnHealthCollege": false, 610 | "creationTime": "2017-12-13T14:04:59.347+08:00", 611 | "tags": null, 612 | "isVIP": false, 613 | "id": "3415950a-be36-4135-8b89-153213661d9e" 614 | }, { 615 | "isRecommendedToHome": false, 616 | "title": null, 617 | "name": "1340857", 618 | "imgUrl": null, 619 | "userName": "1340857", 620 | "userPic": "/upload/201712/b95093c7-6d82-4e35-a234-c7a765778ac9.png", 621 | "introduction": null, 622 | "weChatQRCodeImgUrl": null, 623 | "honor": null, 624 | "goodAtDomain": "", 625 | "fansQty": 0, 626 | "collegeArticleQty": 0, 627 | "collegeCourseQty": 0, 628 | "userMessageQty": 0, 629 | "isSubscribe": false, 630 | "isOwnHealthCollege": false, 631 | "creationTime": "2017-12-13T14:04:58.957+08:00", 632 | "tags": null, 633 | "isVIP": false, 634 | "id": "09852d56-7d96-4b5a-b327-ecab6c7cc034" 635 | }, { 636 | "isRecommendedToHome": false, 637 | "title": null, 638 | "name": "rita", 639 | "imgUrl": null, 640 | "userName": "rita", 641 | "userPic": "/upload/201712/1d654e8c-1ae0-4da2-887f-b4fb0e281648.png", 642 | "introduction": null, 643 | "weChatQRCodeImgUrl": null, 644 | "honor": null, 645 | "goodAtDomain": "", 646 | "fansQty": 0, 647 | "collegeArticleQty": 0, 648 | "collegeCourseQty": 0, 649 | "userMessageQty": 0, 650 | "isSubscribe": false, 651 | "isOwnHealthCollege": false, 652 | "creationTime": "2017-12-13T14:04:58.567+08:00", 653 | "tags": null, 654 | "isVIP": false, 655 | "id": "fcc1398c-7902-41cd-a1d8-365cf1bc54fd" 656 | }, { 657 | "isRecommendedToHome": false, 658 | "title": null, 659 | "name": "13400000833", 660 | "imgUrl": null, 661 | "userName": "13400000833", 662 | "userPic": "/upload/201711/bc0a1297-848a-4999-b6b0-24be76f1c93c.png", 663 | "introduction": null, 664 | "weChatQRCodeImgUrl": null, 665 | "honor": null, 666 | "goodAtDomain": "", 667 | "fansQty": 0, 668 | "collegeArticleQty": 0, 669 | "collegeCourseQty": 0, 670 | "userMessageQty": 0, 671 | "isSubscribe": false, 672 | "isOwnHealthCollege": false, 673 | "creationTime": "2017-12-13T14:04:58.197+08:00", 674 | "tags": null, 675 | "isVIP": false, 676 | "id": "53720ce2-441f-4ae7-88d7-93e6d4d23e41" 677 | }, { 678 | "isRecommendedToHome": false, 679 | "title": null, 680 | "name": "13400000823", 681 | "imgUrl": null, 682 | "userName": "13400000823", 683 | "userPic": null, 684 | "introduction": null, 685 | "weChatQRCodeImgUrl": null, 686 | "honor": null, 687 | "goodAtDomain": "", 688 | "fansQty": 0, 689 | "collegeArticleQty": 0, 690 | "collegeCourseQty": 0, 691 | "userMessageQty": 0, 692 | "isSubscribe": false, 693 | "isOwnHealthCollege": false, 694 | "creationTime": "2017-12-13T14:04:57.787+08:00", 695 | "tags": null, 696 | "isVIP": false, 697 | "id": "e8cb1f28-6e98-4078-bdf9-d2d8de1dd979" 698 | }, { 699 | "isRecommendedToHome": false, 700 | "title": null, 701 | "name": "13400000881", 702 | "imgUrl": null, 703 | "userName": "13400000881", 704 | "userPic": null, 705 | "introduction": null, 706 | "weChatQRCodeImgUrl": null, 707 | "honor": null, 708 | "goodAtDomain": "", 709 | "fansQty": 0, 710 | "collegeArticleQty": 0, 711 | "collegeCourseQty": 0, 712 | "userMessageQty": 0, 713 | "isSubscribe": false, 714 | "isOwnHealthCollege": false, 715 | "creationTime": "2017-12-13T14:04:57.297+08:00", 716 | "tags": null, 717 | "isVIP": false, 718 | "id": "b171c3c3-b1d1-48af-b133-2dd743239436" 719 | }, { 720 | "isRecommendedToHome": false, 721 | "title": null, 722 | "name": "13400000347", 723 | "imgUrl": null, 724 | "userName": "13400000347", 725 | "userPic": "/upload/201711/08f9d4be-7115-45ab-b7f8-011b6ce5a3f3.png", 726 | "introduction": null, 727 | "weChatQRCodeImgUrl": null, 728 | "honor": null, 729 | "goodAtDomain": "", 730 | "fansQty": 0, 731 | "collegeArticleQty": 0, 732 | "collegeCourseQty": 0, 733 | "userMessageQty": 0, 734 | "isSubscribe": false, 735 | "isOwnHealthCollege": false, 736 | "creationTime": "2017-12-13T14:04:56.213+08:00", 737 | "tags": null, 738 | "isVIP": false, 739 | "id": "0a4399a3-e184-474b-818f-f2d5dc2f518b" 740 | }, { 741 | "isRecommendedToHome": false, 742 | "title": null, 743 | "name": "1340776", 744 | "imgUrl": null, 745 | "userName": "1340776", 746 | "userPic": "/upload/201711/5617a092-a325-4d4e-a12f-68a74f6c699a.png", 747 | "introduction": null, 748 | "weChatQRCodeImgUrl": null, 749 | "honor": null, 750 | "goodAtDomain": "", 751 | "fansQty": 0, 752 | "collegeArticleQty": 0, 753 | "collegeCourseQty": 0, 754 | "userMessageQty": 0, 755 | "isSubscribe": false, 756 | "isOwnHealthCollege": false, 757 | "creationTime": "2017-12-13T14:04:55.707+08:00", 758 | "tags": null, 759 | "isVIP": false, 760 | "id": "03532f6c-47ae-4c70-ada9-42e65e5545b5" 761 | }, { 762 | "isRecommendedToHome": false, 763 | "title": null, 764 | "name": "1340276", 765 | "imgUrl": null, 766 | "userName": "1340276", 767 | "userPic": "/upload/201711/35b42c47-4855-4828-acab-4d6bbb0aad95.png", 768 | "introduction": null, 769 | "weChatQRCodeImgUrl": null, 770 | "honor": null, 771 | "goodAtDomain": "", 772 | "fansQty": 0, 773 | "collegeArticleQty": 0, 774 | "collegeCourseQty": 0, 775 | "userMessageQty": 0, 776 | "isSubscribe": false, 777 | "isOwnHealthCollege": false, 778 | "creationTime": "2017-12-13T14:04:55.343+08:00", 779 | "tags": null, 780 | "isVIP": false, 781 | "id": "3639e916-0b08-4177-98e4-bbc10467003e" 782 | }, { 783 | "isRecommendedToHome": false, 784 | "title": null, 785 | "name": "1340249", 786 | "imgUrl": null, 787 | "userName": "1340249", 788 | "userPic": "/upload/201711/e2600c7e-d263-4971-a017-0d6616dfb041.png", 789 | "introduction": null, 790 | "weChatQRCodeImgUrl": null, 791 | "honor": null, 792 | "goodAtDomain": "", 793 | "fansQty": 0, 794 | "collegeArticleQty": 0, 795 | "collegeCourseQty": 0, 796 | "userMessageQty": 0, 797 | "isSubscribe": false, 798 | "isOwnHealthCollege": false, 799 | "creationTime": "2017-12-13T14:04:54.723+08:00", 800 | "tags": null, 801 | "isVIP": false, 802 | "id": "2ac039cb-2342-4511-82ce-c4ff90016a40" 803 | }, { 804 | "isRecommendedToHome": false, 805 | "title": null, 806 | "name": "1340259", 807 | "imgUrl": null, 808 | "userName": "1340259", 809 | "userPic": "/upload/201711/9981ea62-a68b-42b4-a65e-a36594b91c95.png", 810 | "introduction": null, 811 | "weChatQRCodeImgUrl": null, 812 | "honor": null, 813 | "goodAtDomain": "", 814 | "fansQty": 0, 815 | "collegeArticleQty": 0, 816 | "collegeCourseQty": 0, 817 | "userMessageQty": 0, 818 | "isSubscribe": false, 819 | "isOwnHealthCollege": false, 820 | "creationTime": "2017-12-13T14:04:54.263+08:00", 821 | "tags": null, 822 | "isVIP": false, 823 | "id": "cd4209ae-297a-4f28-9692-2bb00b2e49c8" 824 | }, { 825 | "isRecommendedToHome": false, 826 | "title": null, 827 | "name": "13400000226", 828 | "imgUrl": null, 829 | "userName": "13400000226", 830 | "userPic": "/upload/201711/8da563f4-1d4e-4cb5-bf93-76371af6dba4.png", 831 | "introduction": null, 832 | "weChatQRCodeImgUrl": null, 833 | "honor": null, 834 | "goodAtDomain": "", 835 | "fansQty": 1, 836 | "collegeArticleQty": 0, 837 | "collegeCourseQty": 0, 838 | "userMessageQty": 0, 839 | "isSubscribe": false, 840 | "isOwnHealthCollege": false, 841 | "creationTime": "2017-12-13T14:04:53.61+08:00", 842 | "tags": null, 843 | "isVIP": false, 844 | "id": "7a312bf6-66e6-4ef9-b8d1-f1e92c3ca5b6" 845 | }, { 846 | "isRecommendedToHome": false, 847 | "title": null, 848 | "name": "测试", 849 | "imgUrl": null, 850 | "userName": "测试", 851 | "userPic": "/upload/201711/ce051577-4132-405b-8ccf-f1363c991e85.png", 852 | "introduction": null, 853 | "weChatQRCodeImgUrl": null, 854 | "honor": null, 855 | "goodAtDomain": "", 856 | "fansQty": 0, 857 | "collegeArticleQty": 0, 858 | "collegeCourseQty": 0, 859 | "userMessageQty": 0, 860 | "isSubscribe": false, 861 | "isOwnHealthCollege": false, 862 | "creationTime": "2017-12-13T14:04:53.177+08:00", 863 | "tags": null, 864 | "isVIP": false, 865 | "id": "2f3ebf45-cdda-4cf0-b342-5545128aca7d" 866 | }, { 867 | "isRecommendedToHome": false, 868 | "title": null, 869 | "name": "1340997", 870 | "imgUrl": null, 871 | "userName": "1340997", 872 | "userPic": "/upload/201711/8868e223-9ec7-4b8b-b279-e0fc79970bbd.png", 873 | "introduction": null, 874 | "weChatQRCodeImgUrl": null, 875 | "honor": null, 876 | "goodAtDomain": "", 877 | "fansQty": 1, 878 | "collegeArticleQty": 0, 879 | "collegeCourseQty": 0, 880 | "userMessageQty": 0, 881 | "isSubscribe": false, 882 | "isOwnHealthCollege": false, 883 | "creationTime": "2017-12-13T14:04:52.7+08:00", 884 | "tags": null, 885 | "isVIP": false, 886 | "id": "04461af2-92aa-4584-9b58-151dd28875da" 887 | }, { 888 | "isRecommendedToHome": false, 889 | "title": null, 890 | "name": "13400000998", 891 | "imgUrl": null, 892 | "userName": "13400000998", 893 | "userPic": "/upload/201711/8ef69878-8135-409e-96ec-ae1b47edc2e4.png", 894 | "introduction": null, 895 | "weChatQRCodeImgUrl": null, 896 | "honor": null, 897 | "goodAtDomain": "", 898 | "fansQty": 0, 899 | "collegeArticleQty": 0, 900 | "collegeCourseQty": 0, 901 | "userMessageQty": 0, 902 | "isSubscribe": false, 903 | "isOwnHealthCollege": false, 904 | "creationTime": "2017-12-13T14:04:52.28+08:00", 905 | "tags": null, 906 | "isVIP": false, 907 | "id": "d89885af-d222-4bfe-aa8d-9e215c4d23c7" 908 | }, { 909 | "isRecommendedToHome": false, 910 | "title": null, 911 | "name": "13400000889", 912 | "imgUrl": null, 913 | "userName": "13400000889", 914 | "userPic": "/upload/201711/ffe18943-2bbb-463c-a177-a6f925fdd317.png", 915 | "introduction": null, 916 | "weChatQRCodeImgUrl": null, 917 | "honor": null, 918 | "goodAtDomain": "", 919 | "fansQty": 0, 920 | "collegeArticleQty": 0, 921 | "collegeCourseQty": 0, 922 | "userMessageQty": 0, 923 | "isSubscribe": false, 924 | "isOwnHealthCollege": false, 925 | "creationTime": "2017-12-13T14:04:51.78+08:00", 926 | "tags": null, 927 | "isVIP": false, 928 | "id": "3ec78538-5639-46af-9a85-0e47c3335e39" 929 | }, { 930 | "isRecommendedToHome": false, 931 | "title": null, 932 | "name": "1340199", 933 | "imgUrl": null, 934 | "userName": "1340199", 935 | "userPic": "/upload/201711/871ef84d-ef63-4351-aa48-0d0804a517e6.png", 936 | "introduction": null, 937 | "weChatQRCodeImgUrl": null, 938 | "honor": null, 939 | "goodAtDomain": "", 940 | "fansQty": 0, 941 | "collegeArticleQty": 0, 942 | "collegeCourseQty": 0, 943 | "userMessageQty": 0, 944 | "isSubscribe": false, 945 | "isOwnHealthCollege": false, 946 | "creationTime": "2017-12-13T14:04:51.06+08:00", 947 | "tags": null, 948 | "isVIP": false, 949 | "id": "cd25c785-7480-49b5-9389-b3a0e8942ccc" 950 | }, { 951 | "isRecommendedToHome": false, 952 | "title": null, 953 | "name": "罗阳铭", 954 | "imgUrl": null, 955 | "userName": "罗阳铭", 956 | "userPic": "/upload/201707/1707140002905710003212649245.jpg", 957 | "introduction": "负责对董事长和客户的健康资料进行解读、分析和评估,为其制定科学的个性化的健康促进计划", 958 | "weChatQRCodeImgUrl": null, 959 | "honor": null, 960 | "goodAtDomain": "负责对董事长和客户的健康资料进行解读、分析和评估,为其制定科学的个性化的健康促进计划", 961 | "fansQty": 8, 962 | "collegeArticleQty": 5, 963 | "collegeCourseQty": 1, 964 | "userMessageQty": 0, 965 | "isSubscribe": false, 966 | "isOwnHealthCollege": false, 967 | "creationTime": "2017-12-05T17:41:55.473+08:00", 968 | "tags": null, 969 | "isVIP": false, 970 | "id": "977151af-cf0a-4ed7-a6d0-3a5ac9b92a22" 971 | }, { 972 | "isRecommendedToHome": false, 973 | "title": null, 974 | "name": "13408611", 975 | "imgUrl": null, 976 | "userName": "13408611", 977 | "userPic": "/upload/201712/1712040001905710243110256093.png", 978 | "introduction": null, 979 | "weChatQRCodeImgUrl": null, 980 | "honor": null, 981 | "goodAtDomain": "", 982 | "fansQty": 3, 983 | "collegeArticleQty": 1, 984 | "collegeCourseQty": 0, 985 | "userMessageQty": 0, 986 | "isSubscribe": false, 987 | "isOwnHealthCollege": false, 988 | "creationTime": "2017-12-04T17:46:25.957+08:00", 989 | "tags": null, 990 | "isVIP": false, 991 | "id": "0a936503-0ccc-4123-bd66-6a69bbbfad7c" 992 | }, { 993 | "isRecommendedToHome": false, 994 | "title": null, 995 | "name": "1", 996 | "imgUrl": null, 997 | "userName": "1", 998 | "userPic": "/upload/201708/1708140002105710076183551142", 999 | "introduction": "一句话介绍", 1000 | "weChatQRCodeImgUrl": null, 1001 | "honor": null, 1002 | "goodAtDomain": "体重管理", 1003 | "fansQty": 3, 1004 | "collegeArticleQty": 1, 1005 | "collegeCourseQty": 0, 1006 | "userMessageQty": 0, 1007 | "isSubscribe": false, 1008 | "isOwnHealthCollege": false, 1009 | "creationTime": "2017-12-01T12:31:42.183+08:00", 1010 | "tags": null, 1011 | "isVIP": false, 1012 | "id": "ce6c7a52-2079-450b-9364-b641b944d221" 1013 | }, { 1014 | "isRecommendedToHome": false, 1015 | "title": null, 1016 | "name": "13400000856", 1017 | "imgUrl": null, 1018 | "userName": "13400000856", 1019 | "userPic": "/upload/201711/a2bd2fe0-5089-44d4-beae-8a950db9dabe.png", 1020 | "introduction": null, 1021 | "weChatQRCodeImgUrl": null, 1022 | "honor": null, 1023 | "goodAtDomain": "", 1024 | "fansQty": 1, 1025 | "collegeArticleQty": 1, 1026 | "collegeCourseQty": 1, 1027 | "userMessageQty": 0, 1028 | "isSubscribe": false, 1029 | "isOwnHealthCollege": false, 1030 | "creationTime": "2017-12-01T09:57:43.92+08:00", 1031 | "tags": null, 1032 | "isVIP": false, 1033 | "id": "96579baa-9836-4bf5-acbb-c268018884eb" 1034 | }, { 1035 | "isRecommendedToHome": false, 1036 | "title": null, 1037 | "name": "小屋里", 1038 | "imgUrl": null, 1039 | "userName": "小屋里", 1040 | "userPic": "/upload/201711/b4124b88-5b7b-4baf-83a2-c9133c4b11e3.png", 1041 | "introduction": "这是简介", 1042 | "weChatQRCodeImgUrl": null, 1043 | "honor": null, 1044 | "goodAtDomain": "养老", 1045 | "fansQty": 5, 1046 | "collegeArticleQty": 8, 1047 | "collegeCourseQty": 56, 1048 | "userMessageQty": 0, 1049 | "isSubscribe": false, 1050 | "isOwnHealthCollege": false, 1051 | "creationTime": "2017-11-27T15:08:01.527+08:00", 1052 | "tags": null, 1053 | "isVIP": false, 1054 | "id": "b8800131-fc9c-4179-b73d-23d623be13c3" 1055 | } 1056 | ] 1057 | }, 1058 | "targetUrl": null, 1059 | "success": true, 1060 | "error": null, 1061 | "unAuthorizedRequest": false, 1062 | "__abp": true 1063 | } -------------------------------------------------------------------------------- /src/list-pull-loading.vue: -------------------------------------------------------------------------------- 1 | 151 | 783 | --------------------------------------------------------------------------------