私は Angular 初心者です。このフィールドで「変更」が発生するたびに、HTML の「ファイル」フィールドからアップロードされたファイルのパスを読み取ろうとしています。「onChange」を使用すると機能しますが、「ng-change」を使用して Angular 方式で使用すると機能しません。
<script>
var DemoModule = angular.module("Demo",[]);
DemoModule .controller("form-cntlr",function($scope){
$scope.selectFile = function()
{
$("#file").click();
}
$scope.fileNameChaged = function()
{
alert("select file");
}
});
</script>
<div ng-controller="form-cntlr">
<form>
<button ng-click="selectFile()">Upload Your File</button>
<input type="file" style="display:none"
id="file" name='file' ng-Change="fileNameChaged()"/>
</form>
</div>
fileNameChaged()は呼び出されません。Firebug でもエラーは表示されません。
ベストアンサー1
ファイル入力の変更をリッスンするための小さなディレクティブを作成しました。
表示.html:
<input type="file" custom-on-change="uploadFile">
コントローラ.js:
app.controller('myCtrl', function($scope){
$scope.uploadFile = function(event){
var files = event.target.files;
};
});
ディレクティブ.js:
app.directive('customOnChange', function() {
return {
restrict: 'A',
link: function (scope, element, attrs) {
var onChangeHandler = scope.$eval(attrs.customOnChange);
element.on('change', onChangeHandler);
element.on('$destroy', function() {
element.off();
});
}
};
});