微信小程序提供了调取相机直接扫码的功能,但是扫描界面只是一个全屏的相机,且无法添加其他功能。通过微信小程序的camera组件,即系统相机,可以帮助我们实现自定义扫码功能。(注:扫码二维码功能,需升级微信客户端至6.7.3。)
<camera style="width: 100%; height: 100%;" mode="scanCode" bindscancode="scancode" binderror="scanError"></camera>
mode:应用模式,只在初始化时有效,不能动态变更,可选值:normal(默认,相机模式)/ scanCode(扫码模式);
bindscancode:在扫码识别成功时触发,仅在 mode=”scanCode” 时生效;
binderror:用户不允许使用摄像头时触发
<!-- 导航 -->
<view class="nav" style="height: {{systemInfo.statusBarHeight + 44}}px;">
<view class="nav-content">
<image class="icon icon-back" src="../../images/back.svg" bindtap="goBack"></image>
<view>扫描序列码</view>
</view>
</view>
<!-- 上下扫描的效果 -->
<view class="scan"></view>
<!-- 输入框 -->
<view class="bottom">
<view class="bottom-tip" hidden="{{typing}}">扫描设备序列号条形码</view>
<view class="bottom-action" hidden="{{!typing}}">
<text bindtap="cancel">取消</text>
<text class="bottom-action-submit" bindtap="submit">确定</text>
</view>
<view class="bottom-inputBox">
<van-field model:value="{{deviceSerialNo}}" center clearable placeholder="手动输入序列号" border="{{false}}" bind:confirm="confirm" focus="{{typing}}" bind:focus="bindfocus" bind:blur="bindblur" class="bottom-input" custom-style=" background: #F6F6F6;border-radius: 8px;" placeholder-style="color:#000;text-align: center;"></van-field>
</view>
</view>
<!-- 扫码成功时码位置的蓝色标记 -->
<view class="position" hidden="{{!position.length}}" style="left:{{position[0] + (position[2] / 2)}}px;top:{{position[1] + (position[3] / 2)}}px;">
<view></view>
</view>
<!-- 失败提示 -->
<view class="fail" hidden="{{!showFail}}">
<view>
<view class="fail-title">扫描失败</view>
<view>{{errMsg}}</view>
</view>
</view>
扫码页面的导航根据自己的需求来,该案例中导航没有使用的默认导航,需要在对应的json文件添加"navigationStyle": “custom”,添加后将不显示默认导航,可进行自定义。自定义导航的位置一般是在状态栏下方,每种型号的手机的状态栏高度等参数不同,微信小程序提供了获取系统信息的APIwx.getSystemInfo,调用成功后会返回状态栏高度等信息,以便我们进行调整。
上下扫描的效果,写对应的CSS样式即可
scan{
position: absolute;
top: 50%;
transform: translateY(-50%);
width: 80%;
height: 280rpx;
background-image: radial-gradient(circle at 49% 1.8%, rgba(33,150,243,0.28) 0%, rgba(33,150,243,0.00) 102%);
}
.scan::after {
content: '';
width: 100%;
border: 1rpx solid;
border-color: rgba(33,150,243,0.28);
position: absolute;
animation: animate_scan 3s infinite;
}
scancode (e) {
console.log(e)
// 若扫描成功,不进行后续处理
if (this.data.hasScan) {
return
}
// 播放扫描提示音
this.playMusic()
this.setData({
position: e.detail.scanArea, // 扫码位置
hasScan: true
})
// 拿到扫描结果
let str = e.detail.result
// 处理业务逻辑...
}
播放音频:
playMusic () {
const innerAudioContext = wx.createInnerAudioContext()
innerAudioContext.autoplay = true
innerAudioContext.src = '/images/提示音.mp3' /**本地的需要用绝对地址 */
innerAudioContext.play()
}
微信小程序提供了扫码的apiwx.scanCode(Object object)可直接调用相机进行扫码以及选择图片进行扫码(图片扫码需先打开相机)。示例:
wx.scanCode({
onlyFromCamera: false, // 是否只能从相机扫码,不允许从相册选择图片,默认是false
success (res) {
console.log(res)
}
})
我正在尝试设置一个puppet节点,但rubygems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由rubygems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby
我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer
我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢
我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby1.9+ 关于ruby-主要:Objectwhenrun
我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden
我有一些代码在几个不同的位置之一运行:作为具有调试输出的命令行工具,作为不接受任何输出的更大程序的一部分,以及在Rails环境中。有时我需要根据代码的位置对代码进行细微的更改,我意识到以下样式似乎可行:print"Testingnestedfunctionsdefined\n"CLI=trueifCLIdeftest_printprint"CommandLineVersion\n"endelsedeftest_printprint"ReleaseVersion\n"endendtest_print()这导致:TestingnestedfunctionsdefinedCommandLin
我有一个只接受一个参数的方法:defmy_method(number)end如果使用number调用方法,我该如何引发错误??通常,我如何定义方法参数的条件?比如我想在调用的时候报错:my_method(1) 最佳答案 您可以添加guard在函数的开头,如果参数无效则引发异常。例如:defmy_method(number)failArgumentError,"Inputshouldbegreaterthanorequalto2"ifnumbereputse.messageend#=>Inputshouldbegreaterthano
我使用Ember作为我的前端和GrapeAPI来为我的API提供服务。前端发送类似:{"service"=>{"name"=>"Name","duration"=>"30","user"=>nil,"organization"=>"org","category"=>nil,"description"=>"description","disabled"=>true,"color"=>nil,"availabilities"=>[{"day"=>"Saturday","enabled"=>false,"timeSlots"=>[{"startAt"=>"09:00AM","endAt"=>
我想获取模块中定义的所有常量的值:moduleLettersA='apple'.freezeB='boy'.freezeendconstants给了我常量的名字:Letters.constants(false)#=>[:A,:B]如何获取它们的值的数组,即["apple","boy"]? 最佳答案 为了做到这一点,请使用mapLetters.constants(false).map&Letters.method(:const_get)这将返回["a","b"]第二种方式:Letters.constants(false).map{|c
我正在阅读一本关于Ruby的书,作者在编写类初始化定义时使用的形式与他在本书前几节中使用的形式略有不同。它看起来像这样:classTicketattr_accessor:venue,:datedefinitialize(venue,date)self.venue=venueself.date=dateendend在本书的前几节中,它的定义如下:classTicketattr_accessor:venue,:datedefinitialize(venue,date)@venue=venue@date=dateendend在第一个示例中使用setter方法与在第二个示例中使用实例变量之间是