You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular实现点击按钮下划线效果,规避控制器DOM操作

解决Angular按钮点击添加下划线(无DOM操作)的问题

你尝试用ng-class绑定的思路完全符合Angular避免直接DOM操作的最佳实践,报错是因为未将修改后的JS逻辑完整整合到控制器中,以下是正确的实现方案:

完整代码示例

CSS(保持原有样式)

.underline {
  text-decoration: underline;
}

HTML 模板

<div ng-app="myApp" ng-controller="MyController" >
    <button ng-class="{ 'underline': selectedItem === test.a }" ng-click="onClick(test.a)">{{test.a.name}}</button>
    <button ng-class="{ 'underline': selectedItem === test.b }" ng-click="onClick(test.b)">{{test.b.name}}</button>
    <button ng-class="{ 'underline': selectedItem === test.c }" ng-click="onClick(test.c)">{{test.c.name}}</button>
</div>

JavaScript 控制器

var app = angular.module("myApp", []);
app.controller("MyController", function($scope) {
    $scope.test = {
        a: {name: "aaa"},
        b: {name: "bbb"},
        c: {name: "ccc"}
    };
    // 初始化选中状态变量
    $scope.selectedItem = null;
    
    $scope.onClick = function (item) {
        // 仅更新选中状态的业务逻辑,无DOM操作
        $scope.selectedItem = item;
    };
});

核心逻辑说明

  • 用selectedItem变量跟踪当前点击的按钮对应对象,通过ng-class的条件判断动态绑定样式:当按钮对应的对象与selectedItem相等时,自动添加underline类。
  • 控制器仅负责维护选中状态的业务数据,完全脱离DOM操作,符合Angular数据驱动视图的设计理念。

内容的提问来源于stack exchange,提问作者Murmulodi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 20:53:11