“onchange”指令中的Angular回调

时间:2015-05-04 18:15:03

标签: javascript jquery angularjs

非常具体的问题,但重用:我试图将角度回调传递给javascript指令....见下文。 (通过onchange事件尝试product.id

$scope.fileNameChanged = function(folder, id){
        console.log(folder + " " + id);
  }
<div ng-repeat="product in products">
  <form id="upload_form" enctype="multipart/form-data" method="post">
    <span class="btn btn-default btn-file">
      <span class="uploadButton">Choose...</span>
      <input type="file" id="productsFile" onchange="angular.element(this).scope().fileNameChanged('products', product.id)" name="file">
    </span>
  </form>
</div>

控制台只显示Uncaught ReferenceError: product is not defined,但我绝对知道product.id已定义,我在ng-repeat中完成了{{product.id}}只是为了显示文本而且看起来很好......

我不确定是否应该在onchange参数中使用{{..}},所以我只尝试了{{product.id}}并获得Error: [$compile:nodomevents]

我正在使用onchange,因为ng-change不支持文件输入,也不支持我读过的内容。

任何建议都是绝对精彩的,我不是特意想通过回调获得product.id但是任何角度范围变量......

1 个答案:

答案 0 :(得分:1)

很抱歉回答我自己的问题,但这是我非常有效的解决方法!

我使用了元素的Id指令......

<span class="uploadButton">Choose...</span> <input type="file" id="{{product.id}}" onchange="angular.element(this).scope().fileNameChanged('products', this.id)" name="file">

使用this.id得到它,现在作为通过onchange=""传递角度范围的真正解决方案我真的不认为它是明智的,但在这种情况下它是我不会的'无论如何,请注意元素的ID。

我希望这对其他人有用。