(AngularJS)NGCLASS分配了正确的字符串值,但在视图上未更新



在html中:

<td ><div class="ledborder"><div class="led" ng-class="GetLedClass('led1')"/></div></td>     
<td ><div class="ledborder"><div class="led" ng-class="GetLedClass('led2')"/></div></td> 
<td ><div class="ledborder"><div class="led" ng-class="GetLedClass('led3')"/></div></td> 
<td ><div class="ledborder"><div class="led" ng-class="GetLedClass('led4')"/></div></td> 
<td ><div class="ledborder"><div class="led" ng-class="GetLedClass('led5')"/></div></td>

在控制器中:

var ledColorToBg = {'off':'dis_bg', 'red':'red_bg', 'green':'green_bg', 'orange':'orange_bg'};
$scope.GetLedClass = function(module){
    var retClass='';
    var color;
    if ($scope.ledsInfo == null){
        retClass = ledColorToBg['off'];
    }        
    else if ($scope.ledsInfo.systemError){
        retClass = 'red_bg blink';
    }
    else{        
        switch(module){
            case 'led1':
                color = $scope.ledsInfo.led1.led;
                break;
            case 'led2':
                color = $scope.ledsInfo.esxi.led2.led;
                break;
            case 'led3':
                color = $scope.ledsInfo.esxi.led3.led;
                break;
            case 'led4':
                color = $scope.ledsInfo.batteries.led4.led;
                break;
            case 'led5':
                color = $scope.ledsInfo.batteries.led5.led;
                break;
            default:
                break;
        }
        retClass = ledColorToBg[color.color];
        if (color.blink)
            retClass += ' blink';
    }
    return retClass;
}

$ scope.ledsinfo每4秒更新一次。在某些情况下(不是100%可重复的),$ scope.getledClass返回预期值,但是在视图上未更新LED类(由元素颜色反映)。当我检查HTML元素时,我会看到正确的/预期/更新的类值,但在视图上没有呈现。

我知道这不是语法的问题,因为大多数时间都在起作用。

我试图将功能放在$ timeout中,但这只是使情况变得更糟:没有任何元素更新。

我试图将函数放入$ settimeout中,但是它和$ timeout一样bahav。

我试图保留5个示波器var,更新$ scope.ledsinfo,因此ng级会绑定到这些vars,为:

<td ><div class="ledborder"><div class="led" ng-class="{{ledClass.led1}}"/></div></td>     
<td ><div class="ledborder"><div class="led" ng-class="{{ledClass.led2}}"/></div></td> 
<td ><div class="ledborder"><div class="led" ng-class="{{ledClass.led3}}"/></div></td> 
<td ><div class="ledborder"><div class="led" ng-class="{{ledClass.led4}}"/></div></td> 
<td ><div class="ledborder"><div class="led" ng-class="{{ledClass.led5}}"/></div></td>

但是它不正常。

我在这里做错了什么?谢谢。

我想发表评论,但我的声誉还不够。所以..

尝试使用$scope.$apply(function(){});$digest$watch

最新更新