2014-01-10 29 views
1

下面的代码组合更清洁的方式工作传递一个文件输入的文件与angular.js

$scope.onFileSelect = function(element) { 

      alert("selam"); 
      console.log(element.files); 
     }; 

<input type="file" class="file" ng-model="filefoo" multiple onchange="angular.element(this).scope().onFileSelect(this)"/> 

但为什么我必须写很长的表达式:angular.element(this).scope().onFileSelect(this)

我怎么能写清洁也许像

<input type="file" class="file" ng-model="filefoo" multiple onchange="onFileSelect(this)"/> 

回答

1

Angular不知道文件输入的更改事件。 https://github.com/angular/angular.js/issues/1375。所以人们必须手动通过事件。确实这angular.element(this).scope().onFileSelect(this)看起来很奇怪。我会建议为这个绑定到change事件的用例写一个driective。

+0

你的意思是,无论我做什么甚至可能与http://blueimp.github.io/jQuery-File-Upload/angularjs.html,我不能做一些像$ scope。$ on(“fileuploadchange”,函数(e,data){data.files ...我正确吗?::清理一些东西,我需要一个指令,如果已经有一个指令在宇宙中,你可能知道它?谢谢你的明确答案 – merveotesi

+0

对不起,我没有知道bluimp - 也许tehy已经以一种有角度的方式解决了这个问题,“宇宙中的一个指令”从来没有用过这样的指令,一个不需要这样的指令使用mutch代码,并且有一个角度为1.3的特征请求。 .. – michael

+0

非常感谢您的回复。我认为我的指令不会很干净,所以我想问你是否知道这个问题,如果你有建议,那么,我已经学会了blueimp有一个角度指令。让它运行我的应用程序。提前致谢。 – merveotesi

1

事情是,那angular.element(this).scope().onFileSelect(this)是一个有点棘手的方式。 onchange是一个本地DOM事件,其中scope不可用,而angular是一个全局变量,通过它可以访问它的作用域。如果它是ng-change指令,您可以访问onFileSelect(this),但是对于angular而言,类型文件的输入不支持此指令。

+0

感谢您指出它很棘手 – merveotesi