ng-如果没有直接更新
ng-if not updated directly
我想在我的控制器中做的是:
1. 设置变量vm.spinner = false;
2.发送http请求,请求完成后设置vm.spinner = true;
我认为:
<div ng-if='vm.spinner' class=spinner></spinner>
我尝试在 div 旁边打印 vm.spinner 它显示为 true,但是如果我打印出来它,它会在 http 请求完成后立即打印 false。似乎我有两个 vm.spinner 一个在我的控制器中,另一个在 ng-if 范围内!
这是我的 html 观点:
<div ng-if="!vm.spinner && !vm.gridOptions.data.length" class="empty-exams" >
<img ng-src="assets/images/school/empty-fees.png" />
<div class="nothing-to-preview" translate="NothingToPreview"></div>
<button class="start-exams-now" type="button" name="button" ng- click="vm.newFeeModal()">[['Start' | translate]] [['Now' | translate]]</button>
</div>
<div ng-if='vm.gridOptions.data.length' class="subjects-container">
<div class="subjects-grid">
<div class="above-grid-header">
<span translate="Fees Configuration"></span>
<span class="pointer-cursor" ng-click="vm.newFeeModal()">+ [[ 'New Fee' | translate]]</span>
</div>
<div class="grid-itself" dir="[[lang=='en'?'ltr':'rtl']]" ui- grid="vm.gridOptions" ui-grid-edit ui-grid-pagination></div>
</div>
</div>
<div ng-if='vm.spinner' class="spinner"></div>
我试图观看 vm.spinned ..请求完成后它已经改变了!
控制器代码
FeesConfigController.$inject = ['ApiService', '$scope', 'ShareAnyData', 'FeesService', '$filter', '$uibModal', 'componentsPaths', 'logger'];
function FeesConfigController(ApiService, $scope, ShareAnyData, FeesService, $filter, $uibModal, componentsPaths, logger){
var instId = $scope.user.institute.id;
var vm = this;
ApiService.sendMultipleRequests({
call: [FeesService.getFeeTypes, FeesService.getLeaderFeeTypes],
params: [[instId], []],
controller : FeesConfigControllerResolved,
vm: this,
controllerParams: [$scope, FeesService, $filter, logger, ShareAnyData, componentsPaths, $uibModal],
})
}
注意我在 ApiService.sendMultipleRequest 中更新了 vm.spinner
我想说
<div ng-if="!vm.spinner && !vm.gridOptions.data.length" class="empty-exams" >
这个 div 将在请求完成并且微调器为 false 时立即显示
但真正的旋转器并没有消失
我有一个想法,但我不确定。我的 css 中的微调器 class 已激活!所以我认为我的浏览器在动画完成之前不会隐藏微调器!我现在不打算测试这个,直到与我的其他合作伙伴交谈以更新 css.
中的微调器 class
只需使用 ng-class
<div ng-if="vm.spinner">
<div ng-class="{'spinner': vm.spinner}"></div>
</div>
这样一来,动画就再也不用等了。
我有意制作了一个父子 div,因为微调器通常位于某个父容器内。
PS:我只是想指出,你放在这里的代码,应该很简单明了,只有问题需要的参数。
我想在我的控制器中做的是: 1. 设置变量vm.spinner = false; 2.发送http请求,请求完成后设置vm.spinner = true; 我认为:
<div ng-if='vm.spinner' class=spinner></spinner>
我尝试在 div 旁边打印 vm.spinner 它显示为 true,但是如果我打印出来它,它会在 http 请求完成后立即打印 false。似乎我有两个 vm.spinner 一个在我的控制器中,另一个在 ng-if 范围内! 这是我的 html 观点:
<div ng-if="!vm.spinner && !vm.gridOptions.data.length" class="empty-exams" >
<img ng-src="assets/images/school/empty-fees.png" />
<div class="nothing-to-preview" translate="NothingToPreview"></div>
<button class="start-exams-now" type="button" name="button" ng- click="vm.newFeeModal()">[['Start' | translate]] [['Now' | translate]]</button>
</div>
<div ng-if='vm.gridOptions.data.length' class="subjects-container">
<div class="subjects-grid">
<div class="above-grid-header">
<span translate="Fees Configuration"></span>
<span class="pointer-cursor" ng-click="vm.newFeeModal()">+ [[ 'New Fee' | translate]]</span>
</div>
<div class="grid-itself" dir="[[lang=='en'?'ltr':'rtl']]" ui- grid="vm.gridOptions" ui-grid-edit ui-grid-pagination></div>
</div>
</div>
<div ng-if='vm.spinner' class="spinner"></div>
我试图观看 vm.spinned ..请求完成后它已经改变了! 控制器代码
FeesConfigController.$inject = ['ApiService', '$scope', 'ShareAnyData', 'FeesService', '$filter', '$uibModal', 'componentsPaths', 'logger'];
function FeesConfigController(ApiService, $scope, ShareAnyData, FeesService, $filter, $uibModal, componentsPaths, logger){
var instId = $scope.user.institute.id;
var vm = this;
ApiService.sendMultipleRequests({
call: [FeesService.getFeeTypes, FeesService.getLeaderFeeTypes],
params: [[instId], []],
controller : FeesConfigControllerResolved,
vm: this,
controllerParams: [$scope, FeesService, $filter, logger, ShareAnyData, componentsPaths, $uibModal],
})
}
注意我在 ApiService.sendMultipleRequest 中更新了 vm.spinner 我想说
<div ng-if="!vm.spinner && !vm.gridOptions.data.length" class="empty-exams" >
这个 div 将在请求完成并且微调器为 false 时立即显示
但真正的旋转器并没有消失
我有一个想法,但我不确定。我的 css 中的微调器 class 已激活!所以我认为我的浏览器在动画完成之前不会隐藏微调器!我现在不打算测试这个,直到与我的其他合作伙伴交谈以更新 css.
中的微调器 class只需使用 ng-class
<div ng-if="vm.spinner">
<div ng-class="{'spinner': vm.spinner}"></div>
</div>
这样一来,动画就再也不用等了。 我有意制作了一个父子 div,因为微调器通常位于某个父容器内。
PS:我只是想指出,你放在这里的代码,应该很简单明了,只有问题需要的参数。