【问题标题】:AngularJS: How to unselect a span when selecting anotherAngularJS:选择另一个跨度时如何取消选择
【发布时间】:2016-03-01 23:11:37
【问题描述】:

我有一个我用ngrepeat 显示的事物列表,当它们被单击时,会生成一个与所选元素有关的事物的附加列表。我的意图是让被点击元素的背景改变颜色以显示它被选中。我的问题是当我选择另一个元素时,它们都显示为已选中。这是我的代码:

<div class="breakdownRow pointer" ng-class="{bSelection: selection}" ng-click="selection=true" ng-repeat="m in masterList">
    <span class="areaTag">{{m.area}}</span>
    <span class="storeNumTag" ng-repeat="v in m.valueList track by $index">{{v.toLocaleString()}} </span>
</div>

如前所述,第一次点击事件效果很好。 bSelection 是我的 CSS 类,它具有背景颜色的变化。我的问题再次是,一旦单击另一个元素,前一个元素本身就不会“取消选择”。

问题:当另一个元素被选中时,我如何取消给一个元素一个类,以便一次只显示一个突出显示?

【问题讨论】:

    标签: javascript html css angularjs


    【解决方案1】:

    在具体元素中设置和检查选择:

    <div class="breakdownRow pointer" ng-class="{bSelection: m.selection}" ng-click="m.selection=true" ng-repeat="m in masterList">
    

    更新

    只选择一个 - 保存不是布尔值,而是索引选定的元素。 ng-repeat 创建自己的范围,所以点击为每个项目创建的selection。您可以使用 $parent 在父范围内创建一个选择。

    <div class="breakdownRow pointer" ng-class="{bSelection: $parent.selection==$index}" ng-click="$parent.selection=$index" ng-repeat="m in masterList">
    

    angular.module('app', [])
      .controller('controller', function($scope) {
        $scope.masterList = [1, 2, 3, 4, 5, 6, 7, 8];
      });
    .breakdownRow {
      border: 1px solid black;
      width: 100px;
      height: 100px;
    }
    .bSelection {
      background-color: red;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular.js"></script>
    <div ng-app="app" ng-controller="controller">
      <div class="breakdownRow pointer" ng-class="{bSelection: $parent.selection==$index}" ng-click="$parent.selection=$index" ng-repeat="m in masterList">
        {{m}}
      </div>
    </div>

    【讨论】:

    • 这适用于选择一行,但在单击另一行时不会取消选择它
    • 仍然不适合我。你有我可以看到的 plunker 或 jsfiddle 示例吗?
    • @discodane,当然,等一下
    • 太棒了。感谢您的帮助
    猜你喜欢
    • 2018-06-29
    • 2019-03-25
    • 2015-05-08
    • 1970-01-01
    • 2021-01-18
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    相关资源
    最近更新 更多