angular 在弹出dialog上再点击按钮弹出dialog并对file文件监听ng-change事件

angular监听dom为file的input标签的ng-change事件有些问题,

我的老大用的$element.find("id").bind('change',function(){}),但对我这里不适用,我的弹出框不能拿到$element

从stackoverflow上找到了解决办法,原链接https://stackoverflow.com/questions/17922557/angularjs-how-to-check-for-changes-in-file-input-fields在446的位置(回答的人很多,在网页打开滚动条的前半部分),

 

解决办法是:对input的type为file的标签监听ng-change时,重新包装一个custom-ng-change属性标签来使用,

这需要写一个directive,这个要和你的app.controller同级,不能放到你的app.controller里,不然不起作用

directive.js:(也可以放到controller.js里,单要放到app.controller外面)

app.directive('customOnChange', function() {
  return {
    restrict: 'A',
    link: function (scope, element, attrs) {
      var onChangeHandler = scope.$eval(attrs.customOnChange);
      element.on('change', onChangeHandler);
      element.on('$destroy', function() {
        element.off();
      });

    }
  };
});

view.html:

<input type="file" custom-on-change="uploadFile">

controller.js:

app.controller('myCtrl', function($scope){
    $scope.uploadFile = function(event){
        var files = event.target.files;
    };
});    

 这样就能监听了,注意uploadFile后面没有"()",controller里的function有个event参数这样就能监听了

 我的监听结果:

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值