Can';不要让AngularJS应用程序中的CSS立即更新

Can';不要让AngularJS应用程序中的CSS立即更新,angularjs,Angularjs,我希望有一些有棱角的1.x专家能告诉我我做错了什么。我有一个简单的功能来更新“选项卡组”中的3个按钮中的哪一个是当前按钮。每当单击任何按钮时,都会调用此函数 $scope.updateFilter = function (type, value) { // Additional unrelated code here ... document.getElementsByClassName('active')[0].className

我希望有一些有棱角的1.x专家能告诉我我做错了什么。我有一个简单的功能来更新“选项卡组”中的3个按钮中的哪一个是当前按钮。每当单击任何按钮时,都会调用此函数

        $scope.updateFilter = function (type, value) {
            // Additional unrelated code here ...

           document.getElementsByClassName('active')[0].className = document.getElementsByClassName('active')[0].className.replace(' active', '');
           document.getElementById('tabButton_' + value).className += ' active';
           $scope.$apply();
        };
当前按钮的背景色确实会高亮显示,但只有在单击屏幕上的其他位置后才会高亮显示。换句话说,它不会像应该的那样立即更新


有没有办法纠正这个问题?

如果没有看到更多的代码或现有问题的复制品,就很难诊断问题。然而,从上面看,你肯定不是在用“angularjs”的方式。更具角度的方法是使用绑定,并在用户单击不同的按钮选项时更新模型。一个非常基本(风格丑陋)的例子:

angular.module('myApp',[])
.controller('MainController',函数(){
var self=这个;
self.$onInit=函数$onInit(){
//对于示例,将重复这些步骤
self.button=[
“选项1”,
“方案2”,
“选项3”
];
//这是将驱动激活样式的模型绑定
self.activeIndex=0;
};
self.setActiveIndex=函数setActiveIndex(索引){
//这在单击按钮时调用,并更新所使用的模型
//用于活动按钮样式
self.activeIndex=索引;
};
});
.active{
背景:蓝色;
}

{{::b}

如果您能制作一个快速演示应用程序来显示问题,我可能可以解释您为什么会看到自己的行为。很难说,因为我不知道现在是如何调用$scope.updateFilter的(通过ng click、一些外部连接的处理程序等)。Patrick,谢谢你!你的评论回应了我后来从内部获得的反馈。我是Angular的新手,由于现有的代码,我不得不使用Angular1X(又名AngularJS)。边学习边学习范式的转变需要时间。。。然后,当你学习它的时候,你将不得不再次切换到一些新的东西,就像不断发展的js世界一样。