HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

uniapp input 绑定v-model 获取数据在支付宝小程序中输入体验不好

input 支付宝小程序

前言
最近在使用uniapp制作支付宝小程序,遇到一个很有意思却让人苦恼的BUG,支付宝小程序对vue的支持并不友好,以至于部分vue指定在经过uniapp编译打包成小程序后,小程序并不支持。
问题:
我们在做登录页面需要在 input 里输入值,v-model 双向绑定到 data中,

<input type="text" value="" class="username" placeholder="请填写手机号" v-model="username"/>  
<input type="text" value="" class=" password" placeholder="请输入你的密码" v-model="passWord"/>
 到这里时原以为自写的代码天衣无缝,运行H5端没问题,运行在微信小程序没问题,真机测试没问题,支付宝小程序IDE也没问题,担当用支付宝小程序IDE的真机调试,完犊子了,输入框的光标出现跳动,删除时不能全部删除,总之输入体验极其不好,可是在慢速输入下没有问题。  
 为解决这个问题,我下载了uniapp官方的登录模板在支付宝小程序IDE下真机调试,还是会出现这种问题。  
 这里再调侃一下支付宝小程序的社区那是真的 “好” “好的不得了” 当天提出问题,回答问题的客服 “热情高涨” “恢复信息也很快” 解决办法让我 **使用支付宝小程序支持的代码*重写***  
 这个问题看似都不是问题的问题,造就了输入体验极差。究其根本就是支付宝小程序对vue的支持不友好导致的。我们需要绕过**v-model**使用其他办法 **@input**  

献上代码

<input type="text" value="" class="username" placeholder="请填写手机号"  @input="getUsername"/>  
<input type="text" value="" class=" password" placeholder="请输入你的密码" @input="getPassWord"/>  

// data中  
data() {  
        return {  
            ischecked: false,  
            userName : '',  
            passWord : ''  
        }  
    }  
//methods中  
methods:{  

        getUsername:function(event){  
            // 绕过v-model 获取input输入框的值  
            this.userName = event.detail.value  
            console.log(this.userName)  
        }

即可不使用v-model获取input的值

继续阅读 »

前言
最近在使用uniapp制作支付宝小程序,遇到一个很有意思却让人苦恼的BUG,支付宝小程序对vue的支持并不友好,以至于部分vue指定在经过uniapp编译打包成小程序后,小程序并不支持。
问题:
我们在做登录页面需要在 input 里输入值,v-model 双向绑定到 data中,

<input type="text" value="" class="username" placeholder="请填写手机号" v-model="username"/>  
<input type="text" value="" class=" password" placeholder="请输入你的密码" v-model="passWord"/>
 到这里时原以为自写的代码天衣无缝,运行H5端没问题,运行在微信小程序没问题,真机测试没问题,支付宝小程序IDE也没问题,担当用支付宝小程序IDE的真机调试,完犊子了,输入框的光标出现跳动,删除时不能全部删除,总之输入体验极其不好,可是在慢速输入下没有问题。  
 为解决这个问题,我下载了uniapp官方的登录模板在支付宝小程序IDE下真机调试,还是会出现这种问题。  
 这里再调侃一下支付宝小程序的社区那是真的 “好” “好的不得了” 当天提出问题,回答问题的客服 “热情高涨” “恢复信息也很快” 解决办法让我 **使用支付宝小程序支持的代码*重写***  
 这个问题看似都不是问题的问题,造就了输入体验极差。究其根本就是支付宝小程序对vue的支持不友好导致的。我们需要绕过**v-model**使用其他办法 **@input**  

献上代码

<input type="text" value="" class="username" placeholder="请填写手机号"  @input="getUsername"/>  
<input type="text" value="" class=" password" placeholder="请输入你的密码" @input="getPassWord"/>  

// data中  
data() {  
        return {  
            ischecked: false,  
            userName : '',  
            passWord : ''  
        }  
    }  
//methods中  
methods:{  

        getUsername:function(event){  
            // 绕过v-model 获取input输入框的值  
            this.userName = event.detail.value  
            console.log(this.userName)  
        }

即可不使用v-model获取input的值

收起阅读 »

vue组件化开发混合APP

Vue
  • 基于vue-cli配置多页开发,适用于多混合开发平台,GitHub

  • 已运用于多个项目开发,觉得有用可以点个小星星

  • 基于vue-cli配置多页开发,适用于多混合开发平台,GitHub

  • 已运用于多个项目开发,觉得有用可以点个小星星

HBuilderX应用图标一枚

我是一名懂一点点前端开发的UI设计师,使用HB还是有很长一段时间啦,但是总觉得HB的图标在我的Mac里都显的那么的格格不入,所以今天抽了点时间重绘了一下HB的图标,有喜欢的就拿去用吧。

我是一名懂一点点前端开发的UI设计师,使用HB还是有很长一段时间啦,但是总觉得HB的图标在我的Mac里都显的那么的格格不入,所以今天抽了点时间重绘了一下HB的图标,有喜欢的就拿去用吧。

--

外包

--

--

关于开发文档

文档

我就想说一句,坑的一逼~~!能好好整个文档?

我就想说一句,坑的一逼~~!能好好整个文档?

帮忙集成各种第三方插件,5+ ,uniapp 阿里百川 百度Ar 等等均可

技巧 外包 离线打包 插件

无聊时间,帮忙集成各种第三方插件,5+ ,uniapp 阿里百川 百度Ar 等等 android ios 均可,指导离线打包 技术交流, 开发技巧等等
时间就是金钱,简单问题熬个几天划不来,花点钱说不定分分钟就可以搞定,能理解得就使劲问我,知无不言
同时可以承接各种前端短期任务

继续阅读 »

无聊时间,帮忙集成各种第三方插件,5+ ,uniapp 阿里百川 百度Ar 等等 android ios 均可,指导离线打包 技术交流, 开发技巧等等
时间就是金钱,简单问题熬个几天划不来,花点钱说不定分分钟就可以搞定,能理解得就使劲问我,知无不言
同时可以承接各种前端短期任务

收起阅读 »

uni-app创建动画示例往复运动

uniapp

            setInterval(()=>{  
                var animation = uni.createAnimation({  
                    duration:500,  
                    delay:0,  
                })  
                if(num === -20){  
                    num = 0  
                }else if(num ===0){  
                    num = -20  
                }  
                this.animation = animation  
                animation.translateY(num).rotate(90).step()  
                this.animationData = animation.export()  
            }, 500)```  
注意```if(num === -20){  
                    num = 0  
                }else if(num ===0){  
                    num = -20  
                }```
继续阅读 »

            setInterval(()=>{  
                var animation = uni.createAnimation({  
                    duration:500,  
                    delay:0,  
                })  
                if(num === -20){  
                    num = 0  
                }else if(num ===0){  
                    num = -20  
                }  
                this.animation = animation  
                animation.translateY(num).rotate(90).step()  
                this.animationData = animation.export()  
            }, 500)```  
注意```if(num === -20){  
                    num = 0  
                }else if(num ===0){  
                    num = -20  
                }```
收起阅读 »

论如何在 uni-app 上使用 sockjs 以及 stomp(顺便)

GitHub 项目

>本项目可在uni-app 环境上兼容 WebSocket api, 使 sockjs+stomp 可如浏览器环境一般正常运行

> 该方式原理极其简单, 目前简单测试一切 ok, 关键代码在 js/websocket-uni.js 中, 在其中造一个 WebSocket 对象兼容 uni 的 API 即可

> 本项目可运行在 IOS APP 上(模拟器亲测) 以及 浏览器上(浏览器本身就支持 WebSocket), 小程序目测也是 ok的(小程序的 api 被 uni 封装过了, 所以应该是 ok 的)

> 另照此方式, 理论上 写个 websocket-wxmini.js , 然后拿到纯微信小程序上跑目测也是可行的, 单由于本人 996 日夜操劳, 就不亲测了!!

继续阅读 »

GitHub 项目

>本项目可在uni-app 环境上兼容 WebSocket api, 使 sockjs+stomp 可如浏览器环境一般正常运行

> 该方式原理极其简单, 目前简单测试一切 ok, 关键代码在 js/websocket-uni.js 中, 在其中造一个 WebSocket 对象兼容 uni 的 API 即可

> 本项目可运行在 IOS APP 上(模拟器亲测) 以及 浏览器上(浏览器本身就支持 WebSocket), 小程序目测也是 ok的(小程序的 api 被 uni 封装过了, 所以应该是 ok 的)

> 另照此方式, 理论上 写个 websocket-wxmini.js , 然后拿到纯微信小程序上跑目测也是可行的, 单由于本人 996 日夜操劳, 就不亲测了!!

收起阅读 »

安卓原生定位

Native.JS
        var i=0;//执行次数  
        var chenggong=0;//成功次数  
        var shibai=0;//失败次数  

    mui.plusReady(function(){   
            var context = plus.android.importClass("android.content.Context");  
            var locationManager = plus.android.importClass("android.location.LocationManager");  
            var main = plus.android.runtimeMainActivity();  
            var mainSvr = main.getSystemService(context.LOCATION_SERVICE);  

            // 定位方式有network和GPS两种  

            var locationListener = plus.android.implements("android.location.LocationListener", {  
                "onLocationChanged": function(location) {  
                    i++;  
                    chenggong++;  
                    var latitude = plus.android.invoke(location, "getLatitude");  
                    var longitude = plus.android.invoke(location, "getLongitude");  
                    var gpsLocation = "lat:"+ latitude+",lng:"+longitude;  

                    $("#zhixing").val(i);  
                    $("#dingwei").val(chenggong);  
                    $("#area").val(gpsLocation);  

                },  
                "onProviderEnabled": function(res) {  
                },  
                "onProviderDisabled": function(res) {  
                    console.log("无法获取GPS模块,将无法获取经纬度信息!");  
                        i++;  
                        shibai++;  
                        $("#zhixing").val(i);  
                        $("#dingwei").val(shibai);  
                        $("#area").val("");  
                },  
                "onStatusChanged": function(p, s, e) {  
                    console.log(p);  
                }  
            });  
            // locationManager.GPS_PROVIDER 只使用GPS,locationManager参数可以自己百度  
            mainSvr.requestLocationUpdates(locationManager.GPS_PROVIDER, 1000, 0, locationListener);      
    });
继续阅读 »
        var i=0;//执行次数  
        var chenggong=0;//成功次数  
        var shibai=0;//失败次数  

    mui.plusReady(function(){   
            var context = plus.android.importClass("android.content.Context");  
            var locationManager = plus.android.importClass("android.location.LocationManager");  
            var main = plus.android.runtimeMainActivity();  
            var mainSvr = main.getSystemService(context.LOCATION_SERVICE);  

            // 定位方式有network和GPS两种  

            var locationListener = plus.android.implements("android.location.LocationListener", {  
                "onLocationChanged": function(location) {  
                    i++;  
                    chenggong++;  
                    var latitude = plus.android.invoke(location, "getLatitude");  
                    var longitude = plus.android.invoke(location, "getLongitude");  
                    var gpsLocation = "lat:"+ latitude+",lng:"+longitude;  

                    $("#zhixing").val(i);  
                    $("#dingwei").val(chenggong);  
                    $("#area").val(gpsLocation);  

                },  
                "onProviderEnabled": function(res) {  
                },  
                "onProviderDisabled": function(res) {  
                    console.log("无法获取GPS模块,将无法获取经纬度信息!");  
                        i++;  
                        shibai++;  
                        $("#zhixing").val(i);  
                        $("#dingwei").val(shibai);  
                        $("#area").val("");  
                },  
                "onStatusChanged": function(p, s, e) {  
                    console.log(p);  
                }  
            });  
            // locationManager.GPS_PROVIDER 只使用GPS,locationManager参数可以自己百度  
            mainSvr.requestLocationUpdates(locationManager.GPS_PROVIDER, 1000, 0, locationListener);      
    });
收起阅读 »

动态修改导航栏上的按钮状态

导航栏组件

var currentWebview = this.$mp.page.$getAppWebview();
currentWebview.setTitleNViewButtonStyle(1,{
text :this.isStop?'全部暂停':'全部开始',
})

继续阅读 »

var currentWebview = this.$mp.page.$getAppWebview();
currentWebview.setTitleNViewButtonStyle(1,{
text :this.isStop?'全部暂停':'全部开始',
})

收起阅读 »