0

私は次のスピナーを持っています、

<div id="spinningSquaresG" ng-model="ajaxrequest"  ng-show="{{ajaxrequest}}">
<div id="spinningSquaresG_1" class="spinningSquaresG">
</div>
<div id="spinningSquaresG_2" class="spinningSquaresG">
</div>
<div id="spinningSquaresG_3" class="spinningSquaresG">
</div>
<div id="spinningSquaresG_4" class="spinningSquaresG">
</div>
<div id="spinningSquaresG_5" class="spinningSquaresG">
</div>
<div id="spinningSquaresG_6" class="spinningSquaresG">
</div>
<div id="spinningSquaresG_7" class="spinningSquaresG">
</div>
<div id="spinningSquaresG_8" class="spinningSquaresG">
</div>
</div> 
</div>

私のコントローラーでは$scope.ajaxrequest = false;、スピナーが正しく非表示になるように設定しました( ajaxrequest=true に設定すると表示されるので、問題はないと思います)。コントローラー内に ajax リクエストを作成する関数があります。リクエストの開始時にスピナーを表示し、リクエストの終了時にスピナーを非表示にしたいと考えています。ので、私は持っています:

$( document ).ajaxStart(function() {
              $scope.ajaxrequest = true;
              console.log($scope.ajaxrequest);
        });

$( document ).ajaxStop(function() {
              $scope.ajaxrequest = false;
              console.log($scope.ajaxrequest);
        });

コンソールからわかるように、ajaxrequest の値はリクエストの前後で正しく変化しています。問題は、スピナーが表示されないことです。私は何か見落としてますか?

4

2 に答える 2

2

ng-show="ajaxrequest"の代わりに試してくださいng-show="{{ajaxrequest}}"ng-showはすでに式を受け取っているので、中括弧は必要ありません。

于 2014-08-22T19:51:17.847 に答える
2

JQuery を使用して変更をトリガーしているajaxrequestため、angular は何かが変更されたことを認識していません。scope.$apply()ajaxrequest を変更した後に を呼び出して、Angular に変更を通知することもできますが、 JQuery を使用せずにこれを行う方がはるかに優れています。

例として、インターセプターに関するドキュメントをご覧ください: https://docs.angularjs.org/api/ng/service/$http

于 2014-08-22T19:53:12.217 に答える