起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1217|回复: 4

[结贴] 关于codova调用中变量值的问题

[复制链接]

49

主题

150

帖子

306

积分

中级会员

Rank: 3Rank: 3

积分
306
QQ
发表于 2017-3-29 10:31:26 | 显示全部楼层 |阅读模式
我调用了codova,但是搞不懂barcodetext 为什么第一次的值是空的,在sendrequest里面调不到,第二次又有值了,想问下codova里面要将变量的值传递出来,是通过全局变量,还是通过其他的方法。
                cordova.plugins.barcodeScanner.scan(function(result) {
                        barcodetext = result.text;
                        alert("barcodetext"+barcodetext);
                        alert("We got a barcode\n" + "Result: " + result.text + "\n" + "Format: " + result.format + "\n" + "Cancelled: " + result.cancelled);
                }, function(error) {
                        alert("Scanning failed: " + error);
                });
                //+
                alert("开始servlet"+barcodetext);
                if (barcodetext != null) {
                        justep.Baas.sendRequest({
                                "url" : "/oa/checkin",
                                "action" : "signIn",
                                "async" : false,
                                "params" : {
                                        "barcodetext" : barcodetext,
                                        "userid" : userid
                                },
                                "success" : function(date) {
                                         alert(date.state);
                                         
       
                                        // 获取返回值,存放到output1组件中
                                        // me.comp("output1").set({
                                        // "value" : data.code
                                        // });
                                }
                        });
                }
发表于 2017-3-29 11:24:56 | 显示全部楼层
如果直接赋值  barcodetext = result.text;  默认这变量是赋值给window的!!
按理说哪儿都可以获取到的!!
不过为了防止冲突(window定义变量多了容易冲突),建议在方法外边定义一个变量进行赋值!!比如this.barcodetext   然后通过var me = this;
回调中使用me.barcodetext   取值赋值!

为什么第一次的值是空的,在sendrequest里面调不到,第二次又有值了
说明有可能方法cordova.plugins.barcodeScanner.scan的回调函数是异步执行的!!第一次还没赋值呢,就执行后面的代码了!!

所以建议
justep.Baas.sendRequest({代码写在成功回调中!!这样就能报错回调成功的时候立即发送请求!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

49

主题

150

帖子

306

积分

中级会员

Rank: 3Rank: 3

积分
306
QQ
 楼主| 发表于 2017-3-29 11:54:09 | 显示全部楼层
可以了,果然是异步调用的。有个问题搞不懂,我用二维码扫描,为什么codova调用的二位码手机必须离二维码很远才能够扫描成功呢,但是我用微信,支付宝这些,离很近都没问题,这个跟二维码扫描的具体算法有关系吗?
回复 支持 反对

使用道具 举报

发表于 2017-3-29 11:55:34 | 显示全部楼层
tang801011 发表于 2017-3-29 11:54
可以了,果然是异步调用的。有个问题搞不懂,我用二维码扫描,为什么codova调用的二位码手机必须离二维码很 ...

可能有关系!方框显示全 二维码图片应该就可以的!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

49

主题

150

帖子

306

积分

中级会员

Rank: 3Rank: 3

积分
306
QQ
 楼主| 发表于 2017-3-29 12:47:11 | 显示全部楼层
谢谢解答
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-4-20 11:35 , Processed in 0.068154 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表