0

次のコードがあります。

HTML :

<div class="button" ngf-select ng-model="files">Upload using model $watch</div>
<img width="80" height="80" ngf-src="files[0]" ngf-default-src="'/thumb.jpg'" ngf-accept="'image/*'">

ジャバスクリプト:

$scope.$watch('[files]', function () {
        $scope.upload($scope.files);
        console.log($scope.files);
    });

    $scope.log = '';

    $scope.upload = function (files) {
        if (files && files.length) {
            for (var i = 0; i < files.length; i++) {
                var file = files[i];
                Upload.upload({
                    url: 'https://angular-file-upload-cors-srv.appspot.com/upload',
                    fields: {
                        'username': $scope.username
                    },
                    file: file
                }).progress(function (evt) {
                    var progressPercentage = parseInt(100.0 * evt.loaded / evt.total);
                    $scope.log = 'progress: ' + progressPercentage + '% ' +
                                evt.config.file.name + '\n' + $scope.log;
                }).success(function (data, status, headers, config) {
                    $timeout(function() {
                        $scope.log = 'file: ' + config.file.name + ', Response: ' + JSON.stringify(data) + '\n' + $scope.log;
                    });
                });
            }
        }
    };

上記のコードはjsFiddleで正常に動作し、このドキュメントにも注意深く従いました。に表示されるウィンドウエクスプローラーで画像を選択すると、動作するようになりましたimg width="80" height="80" ngf-src="files[0]" ngf-default-src="'/thumb.jpg'" ngf-accept="'image/*'">。ここまでは順調ですね。

しかし、オン$scope.$watchロードとconsole.log($scope.files);プリントのみが機能するようundefinedです。角度が2回目にダイジェストループを呼び出す必要がある場合、それは呼び出されず、アップロードを実行する$scope.$watch呼び出しを防ぎます。$scope.upload($scope.files);あたかも機能しないかのように何も起こってng-model="files"いません。これをデバッグするのに数時間を費やしました。助けてください。

4

0 に答える 0