我遇到了ng-class的问题。我想更改布尔值来控制ng-class,但是这个值是在异步模式下设置的,只是加载了视图文件。
这是.html视图
<li ng-class="{active: isPageView('media')}">
<div class="pointer" ng-show="isPageView('media')">
<div class="arrow"></div>
<div class="arrow_border"></div>
</div>
<a ng-class="{true: 'dropdown-toggle', false: ''}[disabled]" href="">
<i class="icon-camera-retro"></i>
<span>Media</span>
<i class="icon-chevron-down"></i>
</a>
<ul class="submenu">
...........
</ul>
</li>
这是控制器的一部分
$scope.init = function(){
_.mixin(_.str.exports());
$scope.disabled = true;
$rootScope.emptyCompose();
var localstorage = localStorageService.get('Userprofiles');
var allExpired = true;
if (localstorage) {
$rootScope.userprofiles = localstorage;
_.each($rootScope.userprofiles, function(userprofile){
if(moment().isBefore(moment.unix(userprofile.expireTime))){
allExpired = false;
}
});
if(allExpired){
$scope.disabled = ! $scope.disabled;
$rootScope.modalInstance = $modal.open({
templateUrl: 'views/composebilling.html',
controller: 'BillingCtrl',
keyboard: false,
backdrop: 'static'
});
}
}else {
Index.query(function(userprofiles) {
$rootScope.userprofiles = userprofiles;
localStorageService.add('Userprofiles', userprofiles);
_.each($rootScope.userprofiles, function(userprofile){
if(moment().isBefore(moment.unix(userprofile.expireTime))){
allExpired = false;
}
});
if(allExpired){
$scope.disabled = ! $scope.disabled;
$rootScope.modalInstance = $modal.open({
templateUrl: 'views/composebilling.html',
controller: 'BillingCtrl',
keyboard: false,
backdrop: 'static'
});
}
});
}
如果设置了$ scope.disabled而没有在服务器上查询,那么一切都很好,否则我会遇到麻烦
答案 0 :(得分:1)
您正在ng-class
使用isPageView('media')
,但该功能不在您提供的代码示例中。如果有任何依赖于$scope.disabled
我不明白。此外,此ng-class
语句写错了:
<a ng-class="{true: 'dropdown-toggle', false: ''}[disabled]" href="">
应该写成这样的东西:
<a ng-class="{'dropdown-toggle': true-condition, 'disabled': false-condition}" href="">
...其中true-condition
是一个将评估为TRUE
的表达式,而false-condition
是一个将评估为FALSE
的表达式。始终将这些设置为TRUE
和FALSE
是没用的,因为您可以在没有ng-class
的情况下执行此操作。拥有一个名为true
或false
的CSS类只是错误的代码。