`
bewithme
  • 浏览: 422824 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

当angularjs遇到微信jsdk

阅读更多

         最近在做一个微信版的进销存,需要调用微信的条码扫描功能,webapp框架是用的ionic,它是基于angularjs开发的,所以整个项目也直接用angularjs。

        场景为当点击某个按钮时,弹出扫描窗口,扫描成功后将数据显示在文本框。问题是微信的jsdk的扫描接口中已经无法读取$scope了,而且也不能用document.getElementById("xxx").value="qrcode"方法,因为此方法无法双向绑定数据,现在给出如下解决方法

  var fn=function(msg) {
		  var deffer=$q.defer();
		  deffer.resolve(msg);
		  return deffer.promise;
	   };
  $scope.goScanQRCode=function(){
	   wx.scanQRCode({
		    desc: 'scanQRCode desc',
		    needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
		    scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有
		    success: function (res) {
		    	fn(res).then(function(res){//此代码保证可以读写$scope
	            	 $scope.addEntity.product.code=res.resultStr.split(",")[1];
	            });
		}
		});
   };

 别忘记在控制器里注入

$q
 
原理请参照此文章
如果您觉得我的文章给了您帮助,请为我买一杯饮料吧!我将非常感激并坚持为大家提供更多帮助!
 
 
 
  • 大小: 73.5 KB
0
1
分享到:
评论
4 楼 njchenliang 2017-09-11  
楼主,我按你的方法来,怎么一次都没启用?
3 楼 shorrow 2016-06-17  
下面这种写法不行吗?

$scope.goScanQRCode=function(){ 
  wx.scanQRCode({ 
    desc: 'scanQRCode desc', 
    needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果, 
    scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有 
    success: function (res) { 
      $scope.addEntity.product.code=res.resultStr.split(",")[1]; 

}); 
}; 
2 楼 bewithme 2015-12-03  
ive 写道
你好 我按照你的方法做了 在第一次调用扫一扫的时候结果能够更新到文本框 但是第二次调用就不好用了,你有碰到这种情况吗?

你好,我这里每次都是正常的,你应该是在其它地方有代码错误。
1 楼 ive 2015-11-28  
你好 我按照你的方法做了 在第一次调用扫一扫的时候结果能够更新到文本框 但是第二次调用就不好用了,你有碰到这种情况吗?

相关推荐

Global site tag (gtag.js) - Google Analytics