在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