2016-06-22 17 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は使用できません。 –

答えて

2

角度scope.$watchの使用です。お使いのコントローラでは、これを追加します。

scope.$watch("image", function(newValue, oldValue) { 
    // Do anything you want here 
    scope.uploadImage(newValue); 
} 

詳しい情報についてscope.$watchhttps://docs.angularjs.org/api/ng/type/$rootScope.Scope

1

をあなたがこの時に、この入力の変化が

トリガまたはHERE

+0

'ng-change'は次のように' 'で動作しないと思う:https://github.com/angular/angular.js/issues/1375(私はテストをしなかった...) 。しかし、 'angle-file-upload'は確かに可能な解決策です。 – user3632710

3

として使用されますng-change="nameOfFunction()"を使用することができ、hereを見つけましたカスタム・ディレクティブを使用して、入力ファイルの変更をlistenすることができます。

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

関連する問題