Изменение класса css с помощью angularjs

#javascript #css #angularjs

#javascript #css #angularjs

Вопрос:

Я пытаюсь изменить класс выбранной кнопки в группе входных радиоканалов. Каждая кнопка представляет одно место, а затем будет отображено общее количество выбранных.

    $scope.calculateChecked = function() {
      var count = 0;
      
      angular.forEach($scope.data, function(value) {
        if(value.checked)
          count  ;
      });
      
      return count;
   };
  

Вот мой пример plunker:
http://plnkr.co/edit/wKzcz6TbYmfbL5mW?open=lib/script.jsamp;deferRun=1

Чего я пытаюсь добиться, так это того, что при выборе определенного места (т. Е. места 4) все предыдущие места (1,2,3) будут выбраны автоматически, а затем рассчитаны как цена за 4 места, вот так

Я знаю, что использую устаревшую версию, но я все еще изучаю базовый.

Заранее спасибо за любую помощь и предложения, очень ценится 🙂

Ответ №1:

Вот моя демонстрация с Plunker.

На ваш взгляд: вместо того, чтобы иметь show свойство, используйте user.checked свойство вашей модели, чтобы вам не приходилось синхронизировать оба значения.

 <label style="width:100px;padding: 13px;border-radius: 5px;background: dimgray;
       text-align: center;color: white;box-shadow: 0px 0px 17px -4px rgba(140,140,140,1);" 
       ng-class="{checked: user.checked}">
<input type="checkbox" style="display:none" value="1" name="options" 
       ng-model="user.checked" ng-click="userClick(user)"/>
<i class="fas fa-couch h2 px-2"></i><br />
${{price}}
{{ x }}
</label>
  

Контроллер: добавьте эту функцию

 $scope.userClick = function(user) {
    if(user.checked) {
       var i = 0;       
       while($scope.data[i].name != user.name)
       {
          $scope.data[i].checked = true;
          i  ;
       };
    }
};
  

Комментарии:

1. Вау! Большое спасибо за ответ, чувак… Это действительно работает..

2. Хотя, простите мою новизну.. Я пытался реализовать ваш код в своем, он не работает… Я даже пробовал с простым файлом, пытаясь решить, может быть, есть конфликт функций или что-то в этом роде с моим, но все равно не сработает.. Вот ваш plunker, реализованный с нуля.. prestigeair.bisapunya.com/cindy ? Не могли бы вы просветить меня, пожалуйста? Застрял на несколько дней, пытаясь выяснить, что не так…

3. На странице, которую вы упомянули, есть другие проблемы. Для вас, чтобы использовать bootstrap.min.js вам нужно добавить библиотеку jquery раньше в ваш html-код. Этого не происходит в Plunker, потому что они загружают jquery вне вашего кода.

4. Да, уже добавлен jquery cdn сейчас. Все еще не работает .. Есть ли что-нибудь еще, чего не хватает в plunker?

5. Извините, я обновил свой ответ новой версией userClick() функции. Это должно работать после развертывания на вашем веб-сайте. Plunker ведет себя по-другому при запуске того же фрагмента Angularjs и использует более новую версию фреймворка.