2016-06-22 28 views
1

我使用控制器作爲語法。從輸入的onchange調用函數

而當我的文件輸入改變了,我想觸發一個函數。

該怎麼辦?下面

是我的代碼以$範圍語法

<input class="upload" type="file" accept="image/*" ng-model="image" 
       onchange="angular.element(this).scope().uploadImage(this)"> 
+1

爲什麼不使用'NG-變化=」 yourController.yourFunction()「'? – Matheno

+1

如果type =「file」,則不能使用ng-change。 –

回答

1

可以使用ng-change="nameOfFunction()"這將觸發時,該輸入變化

或者使用HERE

+0

我不認爲''ng-change'在''工作,根據這個:https://github.com/angular/angular.js/issues/1375(我沒有測試...) 。然而'angular-file-upload'確實是一個可行的解決方案。 – user3632710

3

由於發現here,您可以使用自定義指令來偵聽輸入文件中的更改。

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; 
    }; 
}); 

directive.js:

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

View JSFIDDLE