javascript - ng-click 只影响它所在的​​元素

标签 javascript angularjs

我正在使用 ng-repeat 生成一些元素...

<div class="form-block" ng-repeat="form in formblock | filter:dateFilter">

    <div ng-click="showResults()" ng-if="repeat == true" class="drop">{{ form.form_name }} <span class="caret"></span></div>

    <div ng-show="results" class="formURL">{{ form.url }}</div>
    <div ng-show="results" class="formCount">{{ form.count }}</div>
    <div ng-show="results" class="formSubmit">{{ form.submit }}</div>

</div>

如您所见,ng-click="showResults()" 切换其他元素的显示。问题是,我只希望 ng-click 切换同一容器内的元素,而不是切换所有元素。

简而言之,我只想让点击事件影响调用该函数的同一容器中的元素,我该怎么做?

这是我 Controller 中的showResults...

$scope.showResults = function(){
  return ($scope.results ? $scope.results=false : $scope.results=true)
}

最佳答案

ng-repeat 为您提供一个特殊变量(除非您已经有一个标识符):$index

使用它,您可以在 Angular 代码中存储(而不是单个 bool 值)对象 $index => toggleState:

$scope.hiddenHeroes = {};

$scope.toggleHero = function (idx) {
    $scope.hiddenHeroes[idx] = !$scope.hiddenHeroes[idx];
}

在您的 HTML 中:

<div ng-repeat="hero in heroes">
  <div class="hero" ng-hide="hiddenHeroes[$index]">
  <h1>
  {{hero}}
  </h1>
  All you want to know about {{hero}}!
  <br />
  </div>
  <a ng-click="toggleHero($index)">Toggle {{hero}}</a>
</div>

See it live on jsfiddle.net!

关于javascript - ng-click 只影响它所在的​​元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39215141/

相关文章:

javascript - 通过 Bootstrap Modal 提交确认

javascript - 用 Electron 下载游戏/用 Electron 检测游戏版本

传递引用时 Angularjs 数据绑定(bind)?

javascript - 使用带有缩进的 angular-ui-codemirror 进行代码美化

javascript - AngularJS:如何在另一个 Controller 中执行方法?

javascript - 在使用 webrtc 流式传输之前放大 MediaStreamTrack(音频)

javascript - Firebase 托管 : how to generate a global 'map/array' that can be used on all pages instead of parsing the database on each page load

javascript - IndexedDB游标

javascript - window.postMessage 不适用于从 iframe 到父文档

javascript - AngularJs:$watch未触发