我使用控制器作爲語法。從輸入的onchange調用函數
而當我的文件輸入改變了,我想觸發一個函數。
該怎麼辦?下面
是我的代碼以$範圍語法
<input class="upload" type="file" accept="image/*" ng-model="image"
onchange="angular.element(this).scope().uploadImage(this)">
我使用控制器作爲語法。從輸入的onchange調用函數
而當我的文件輸入改變了,我想觸發一個函數。
該怎麼辦?下面
是我的代碼以$範圍語法
<input class="upload" type="file" accept="image/*" ng-model="image"
onchange="angular.element(this).scope().uploadImage(this)">
使用角度scope.$watch
。在您的控制器,補充一點:
scope.$watch("image", function(newValue, oldValue) {
// Do anything you want here
scope.uploadImage(newValue);
}
更多有關scope.$watch
:https://docs.angularjs.org/api/ng/type/$rootScope.Scope
可以使用ng-change="nameOfFunction()"
這將觸發時,該輸入變化
或者使用HERE
我不認爲''ng-change'在''工作,根據這個:https://github.com/angular/angular.js/issues/1375(我沒有測試...) 。然而'angular-file-upload'確實是一個可行的解決方案。 – user3632710
由於發現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);
}
};
});
爲什麼不使用'NG-變化=」 yourController.yourFunction()「'? – Matheno
如果type =「file」,則不能使用ng-change。 –