Подчеркнуть текст кнопки после нажатия в угловом

Хотите исключить манипуляции с DOM из контроллера, поскольку рекомендуется, чтобы контроллеры содержали только бизнес-логику. У меня есть три кнопки, где я хочу подчеркнуть текст кнопки, если кнопка была нажата (jsfiddle):

CSS:

.underline {
  text-decoration: underline;
}

HTML:

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

JS:

var app = angular.module("myApp", []);
app.controller("MyController", function($scope) {
    $scope.test = {
        a: {name: "aaa"},
        b: {name: "bbb"},
        c: {name: "ccc"}
    };
    $scope.onClick = function () {
      $("button").removeClass("underline");
      $(event.target).addClass("underline");
     
    };
});

Я безуспешно пытался следовать этой подсказке:

<button ng-class = "{ 'underline': select === test.a }" ng-click = "onClick(test.a)">{{test.a.name}}</button>

$scope.select = null;
$scope.onClick = function (abc) {
    $scope.select = abc;
};

Вот jsfiddle для этой модификации, которая выдает синтаксическую ошибку, которую я не могу решить.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
74
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте поместить ng-class в скобки следующим образом:

<some-element [ngClass] = "'first second'">...</some-element>

<some-element [ngClass] = "['first', 'second']">...</some-element>

<some-element [ngClass] = "{'first': true, 'second': true, 'third': false}">...</some-element>

<some-element [ngClass] = "stringExp|arrayExp|objExp">...</some-element>

<some-element [ngClass] = "{'class1 class2 class3' : true}">...</some-element>

спасибо, [ngClass] разрешает сообщение об ошибке, но не подчеркивает текст. Есть ли проблема со сравнением объектов select === test.b?

Hölderlin 15.04.2023 16:49

Должен быть @Hölderlin

Antosser 16.04.2023 15:33

пришлось изменить версию фреймворка в jsfiddle. Теперь он работает так, как ожидалось.

Hölderlin 16.04.2023 16:08

Другие вопросы по теме