一个input标签解决文件单选多选的问题

好久没写博客,最近项目优化,看见文件上传组件,发现之前用的是两个input标签,一个是多选,一个是单选,用过配置来控制显示或者隐藏

<div ng-click='!ctrl.fileUploader.isUploading && ctrl.reset($event)' class=" upload-text  text-center "
    ng-class="{'bg-disable':ctrl.fileUploader.isUploading}">
    <span ng-transclude></span>
    <input type="file" class='input-btn' uploader="ctrl.fileUploader" nv-file-select ng-show='!ctrl.isMultiple'
        ng-disabled="ctrl.fileUploader.isUploading"
        ng-class="{'input-disable':ctrl.fileUploader.isUploading}">
    <input type="file" class='input-btn' uploader="ctrl.fileUploader" nv-file-select ng-show="ctrl.isMultiple"
        multiple="multiple" ng-disabled="ctrl.fileUploader.isUploading"
        ng-class="{'input-disable':ctrl.fileUploader.isUploading}">
</div>

如果input标签里面 只要有multiple这个属性,不管你给的值是true或者false都是多选,没有这个属性就是单选,所以不能用multiple =‘false’或者multiple =‘true’控制,难道真的只能写2个标签?下面引入一个angular指令ng-prop

ng-prop指令

官方定义:该指令将表达式绑定到DOM元素属性,允许通过在属性中包含属性名称来写入任意属性,比如:将“my value”绑定到value属性上。

<input type="text" ng-prop-value="'my value'">

显示结果:
在这里插入图片描述
可以看出 input value属性值变成了“my value”!

如果我自己定义属性呢?

<input type="text" ng-prop-test="11111">

我们来打印一下这个dom元素的属性集合里面有没有test属性.
在这里插入图片描述
看打印结束是有这个属性的,然后我看下我没写multiple属性
在这里插入图片描述
默认值是false,那是不是我把这个multiple属性改成true就成多选了?然后改成这样

<input type="file"  ng-prop-multiple="true">

在这里插入图片描述
值确实变了,单选也变成多选了,那么我项目里面的html就可以改成如下

<div ng-click='!ctrl.fileUploader.isUploading && ctrl.reset($event)' class=" upload-text  text-center "
    ng-class="{'bg-disable':ctrl.fileUploader.isUploading}">
    <span ng-transclude></span>
    <input type="file" class='input-btn' uploader="ctrl.fileUploader" nv-file-select ng-prop-multiple="ctrl.isMultiple"
        ng-disabled="ctrl.fileUploader.isUploading" ng-class="{'input-disable':ctrl.fileUploader.isUploading}">
</div>

这样一个标签就可以搞定,ctrl.isMultiple这个值是产品配置的值,就可以通过这个值来判断需要单选或者多选!好了说到这里都已经说的差不多了,有不正的地方请指正!!欢乐的时光总是过得特别快,又到时候和大家讲拜拜!!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值