没有点击的角度ng级改变

时间:2014-06-28 11:06:35

标签: angularjs ng-class

我遇到了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而没有在服务器上查询,那么一切都很好,否则我会遇到麻烦

1 个答案:

答案 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的表达式。始终将这些设置为TRUEFALSE是没用的,因为您可以在没有ng-class的情况下执行此操作。拥有一个名为truefalse的CSS类只是错误的代码。