私はAngular.jsを初めて使用し、 FineUploaderライブラリを介してファイルのAJAX投稿を実行しようとしています。githubで見つけたディレクティブを他のコードで変更しようとしましたが、戻り値をモデルに戻すことができないようです。
私のHTMLコードは、
<div ng-controller="Analysis">
<div ng-model="analysis" fine-uploader upload-destination="upload" upload-extensions="model"></div>
</div>
簡単なコントローラーで
function Analysis($scope){
$scope.analysis = [];
}
ただし、トリックはディレクティブです
angular.module('cliniccio.directives', []).
directive('fineUploader', function() {
return {
restrict: 'A',
require: '?ngModel',
link: function($scope, element, attributes, ngModel) {
var uploader = new qq.FineUploader({
element: element[0],
request: {
endpoint: attributes.uploadDestination,
},
validation: {
allowedExtensions: attributes.uploadExtensions.split(',')
},
text: {
uploadButton: '<i class="icon-upload icon-white"></i> Upload File'
},
template: '<div class="qq-uploader">' +
'<pre class="qq-upload-drop-area"><span>{dragZoneText}</span></pre>' +
'<div class="qq-upload-button btn btn-info" style="width:auto;">{uploadButtonText}</div>' +
'<span class="qq-drop-processing"><span>{dropProcessingText}</span></span>' +
'<ul class="qq-upload-list" style="margin-top: 10px; text-align: center;"></ul>' +
'</div>',
classes: {
success: 'alert alert-success',
fail: 'alert alert-error'
},
callbacks: {
onComplete: function(id, fileName, responseJSON) {
console.log(ngModel);
ngModel.$modelValue.push(responseJSON);
}
}
});
}
}});
モデル値をプッシュするonCompleteコールバックに注意してください。ただし、デバッグ出力
ファイル:{{分析| json}}
空のままです。サーバーが実際に期待されるjsonを送り返したことを確認したことに注意してください。ngModelの名前が未定義のようです。
私はさまざまな組み合わせを試しましたが、これは適切な方法ではない可能性があると結論付けるようになりました。