public.js说明

文件说明:公共方法集合

示例代码: 

import {serverRef} from '@/common/js/public.js'
serverRef({
    url: '',
    data: {key},
    validate: function(){
    },
    success: (data){
    }
})

 

一、方法:serverRef(config)

@平台:由于H5跨域问题,在H5端时请求URL必需在本域下

@说明:响应式从服务器获取数据。(指定变量值发生变化时,自动请求服务器)

@name serverRef(config)
@说明: 响应式从服务器获取数据。(一旦某一筛选值发生变化时,自动请求服务器获取最新数据)

@params:
    config = {
       url: '', // [String 必需] 请求服务器网址
       method: 'GET', //[String 可选] 请求模式,默认值GET。
       data:  {key},  // [JSON 必需]  绑定的响应式变量。一旦该变量值发生变化,就会请求服务器获取最新数据
       validate: function(){},  // [Fun 可选] 验证请求条件,如果返回false则不请求服务器。比如我们在请求前先检测某一变量是否有值,空值就不提交
       delay: 200, [Number 可选] 延迟执行。如果数据变化很快,会不停请求服务器,给服务器带来压力。这里做一个请求延迟。默认是200豪秒
       success: function(data) {}, [Fun可选] 执行成功返回
       fail: function(msg){}, [Fun 可选] 执行失败返回
       complete: function(){}, [Fun 可选] 执行完成返回
   }

 @return: [无]

 

代码演示一(组合式内调用:setup内):

template:

<template>
    <uni-data-picker :localdata="items" placeholder="请选择班级" v-model="key"></uni-data-picker>
    <view>
        服务器返回数据:{{serverData}}
    </view>
</template>

 

script:

<script setup>
    import {
        ref
    } from 'vue'

    import {
        serverRef
    } from '@/common/js/public.js'

    const items = [{
            text: "一年级",
            value: "1-0",
            children: [{
                    text: "1.1班",
                    value: "1-1"
                },
                {
                    text: "1.2班",
                    value: "1-2"
                }
            ]
        },
        {
            text: "二年级",
            value: "2-0"
        },
        {
            text: "三年级",
            value: "3-0"
        }
    ]

    var serverData = ref('')
    var key = ref('')

    serverRef({
        url: 'http://sys.wangshen.net/1.asp',
        method: 'GET',
        data: {
            key
        },
        validate: function() {
            return (key.value) ? true : false
        },
        success: (data) => {
            serverData.value = data
        },
        fail(msg) {
            console.log(msg);
        }
    })
</script>

 

代码演示二(选项式内调用:非setup内)

template:

<template>
    <uni-data-picker :localdata="items" placeholder="请选择班级" v-model="sendData.key"></uni-data-picker>
    <view>
        服务器返回数据:{{serverData}}
    </view>
</template>

 

script:

<script>
    import {
        serverRef
    } from '@/common/js/public.js'

    export default {
        data() {
            return {
                serverData: '',
                sendData: {
                    key: ''
                },
                items: [{
                        text: "一年级",
                        value: "1-0",
                        children: [{
                                text: "1.1班",
                                value: "1-1"
                            },
                            {
                                text: "1.2班",
                                value: "1-2"
                            }
                        ]
                    },
                    {
                        text: "二年级",
                        value: "2-0"
                    },
                    {
                        text: "三年级",
                        value: "3-0"
                    }
                ]

            };
        },
        created() {
            var $this = this;
            serverRef({
                url: 'http://sys.wangshen.net/1.asp',
                method: 'GET',
                data: $this.sendData, // 注意这里,要保持他是响应式的变量,而不能使用 data: {key: $this.sendData.key}
                validate: function() {
                    return ($this.sendData.key) ? true : false
                },
                success: (data) => {
                    $this.serverData = data
                },
                fail(msg) {
                    console.log(msg);
                }
            })
        }
    }
</script>

 

演示说明:

上例中,我们将筛选数据key(key必需是ref或reactive动态响应的变量)绑定在serverData内,只要用户选择了班级,改变了key值,就会从服务器拉取最新数据。

这样的好处是:节省开发代码。

 

 

二、方法:disablePageScroll()、enablePageScroll()

@平台: H5端(目前不支持APP,待后续完善)

@说明:在一些场景中,比较弹出一个层,然而我们在弹层上操作时,会滚动整个页面。此时需要将页面滚动禁用。

disablePageScroll() 与 enablePageScroll() 是配合使用的。

template:

<template>
    <button @click="status=!status">switch---{{status}}</button>
    <view style="height:2000px;">123</view>
</template>

 

script:

<script>
    import {
        disablePageScroll,
        enablePageScroll
    } from '@/common/js/public.js'

    export default {
        data() {
            return {
                status: false
            };
        },
        methods: {
            
        },
        watch: {
            'status': function(newV, oldV){
                newV ? disablePageScroll() : enablePageScroll()
            }
        },
        created() {
        }
    }
</script>

 

 

三、方法:openUrl(url, target)

@说明:打开网址,或拨打电话

@平台:APP 、H5

@params:

    url : [String 必需] 网址路径,或固定电话、移动电话

   target: [String 可选] 默认值_blank 。仅在H5端打开网址有效。

 

template:

<template>
    <view @click="open('0556-5371498')">
        拨打电话:0556-5371498
    </view>
</template>

 

script:

<script>
    import {
        openUrl
    } from '@/common/js/public.js'

    export default {
        data() {
            return {
            };
        },
        methods: {
            open: function(param){
                openUrl(param, '_self')
            }
        },
        watch: {
        },
        created() {
        }
    }
</script>

 

 

四、方法:sleep(sec, refresh)

@说明:使程序代码休眠一段时间,在执行后面的代码

@params:

    sec: [Number 必需]  休眠时间,单位秒

   refresh: [Number 可选] 刷新时间,默认值是1000,表示1秒。如果休眠时间过少时,此值也要相应设置小点。比如,休眠0.5秒时,此值可以设置为 100

@注意:

     在调用函数中,必需采用async 方式调用。执行中加上等待语法: await,代码如下:

 

template:

<template>
    <button @click="toShow()">点击5秒后显示下方内容</button>
    <view v-show="status">
        拨打电话:0556-5371498
    </view>
</template>

 

script:

<script>
    import {
        sleep
    } from '@/common/js/public.js'

    export default {
        data() {
            return {
                status: false
            };
        },
        methods: {
            toShow: async  function(){
                // 挂起5秒
                console.log('开始挂起');
                await sleep(5)
                console.log('挂起结束');
                this.status = true
            }
        }
    }
</script>

 

posted @ 2022-09-09 15:27  1024记忆  阅读(146)  评论(0编辑  收藏  举报