5

私はこのコントロールを使用しています: http://blueimp.github.io/jQuery-File-Upload/angularjs.htmlを使用して角度でファイルをアップロードします。ファイルがサーバーにアップロードされたら、URL を返し、それを表示したいと思います。成功のコールバックでクライアントに。使用されているプラ​​グインは通常の jquery ファイルのアップロードですが、私が使用している angular ディレクティブ ラッパーが提供されています。

コールバックを定義する方法は次のとおりです。

$scope.options = {
    url: '/api/Client/',
    type: 'PUT',
    done: function (event, data) {
        var scope = angular.element(this).scope();
        scope.test = "doesn't work";
        scope.$apply(function () {
            scope.test = "this doesn't work either";
        });
    }
};

ファイルは正常にアップロードされ、done 関数が呼び出されますが、ビューを更新できません。最初はスコープを変更してみましたが、 $apply() 関数が必要になることに気付きましたが、それも機能していません。

私も試してみました

$scope.options = {
    url: '/api/Client/',
    type: 'PUT',
    done: function (event, data) {
        $scope.test = "doesn't work";
        $scope.$apply(function () {
            $scope.test = "this doesn't work either";
        });
    }
};

それもうまくいきません。ビューが更新されない理由がわかりません。done 呼び出しは単なる ajax 成功イベントであるため、この特定のプラグインがどのように $scope.$apply で問題を引き起こしているのかわかりません。私は AngularJs 1.1.5 を使用していますが、1.0.7 も試してみましたが、同じ問題が発生しています。

4

2 に答える 2

11

問題が何であるかを明確にするために、私のコメントからコピーしました。

私は問題を理解することができました。彼らの例を使用すると、 ng-controller の複製がありました(彼らの例は他のコントローラー内にネストされていました)。両方が同じコントローラーを使用していても、ネストされたコントローラースコープ内にあるものだけを更新するようです。重複する ng-controller 属性を削除すると、すべて正常に動作します。

于 2014-11-10T13:27:09.717 に答える
1

私もこの問題に丸一日を費やしてきたので、私も声を上げようと思いました。

HTML で、ng-controller を ul 要素ではなく div ラッパーに適用していることを確認してください。

于 2015-06-11T08:01:09.723 に答える