ng隐藏模型变化

时间:2014-08-22 19:45:01

标签: javascript ajax angularjs ng-show ng-hide

我有以下微调器,

<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值在请求之前和之后正确地改变了。问题是旋转器没有出现。我错过了什么吗?

2 个答案:

答案 0 :(得分:2)

尝试使用ng-show="ajaxrequest"代替ng-show="{{ajaxrequest}}"ng-show已经使用了表达式,因此不需要括号。

答案 1 :(得分:2)

您正在使用JQuery触发对ajaxrequest的更改,因此angular不知道任何内容已发生变化。您可以在更改ajaxrequest之后调用scope.$apply()以通知更改的角度,但如果没有JQuery,这样做会好得多。

请查看有关拦截器的文档,例如:https://docs.angularjs.org/api/ng/service/$http