angularjs - 显示/隐藏动态创建的元素之一
问题描述
我有一个简单的问题,我无法解决。动态创建了多个元素(见附图),我只需要为我点击的元素显示/隐藏下拉内容。下面的代码通过按下任何按钮来显示/隐藏所有元素。
我可以通过{{ loop.index }}获取 for 循环的索引,并使用它为每个下拉列表动态创建一个 id 或将其作为参数传递,但仍然存在使用它和操作下拉内容以显示或隐藏。
toggleDropdown()将isVisible变量设置为 true 或 false,并根据下拉菜单是否显示的值。
这是我的控制器:
OffersCtrl.$inject = ['PROFILE_ID', '$location'];
function OffersCtrl(PROFILE_ID, $location) {
let vm = this;
vm.isVisible = false;
vm.getText = getText;
vm.toggleDropdown = toggleDropdown;
function toggleDropdown() {
vm.isVisible = !vm.isVisible;
}
}
这是我的html/twig
(OffersCtrl
定义为$ctrl
):
<ul class="offer-tiles">
{% for offer in profile.offers %}
<li>
<div class="content">
<p class="title">{{ offer.title }}</p>
<p class="price">
<span class="symbol">€</span>
<span class="value">{{ offer.price.convertedAmount }}</span>
</p>
<p class="description">{{ offer.category.name }}</p>
<input type="button" id="expandBtn" class="expand" value="v" ng-click="$ctrl.toggleDropdown()" />
</div>
<div class="box-dropdown" ng-show="$ctrl.isVisible">
<p>{{ offer.description }}</p>
<hr/>
....
</div>
</li>
{% endfor %}
</ul>
解决方案
您必须isVisible
用作数组,因为您有多个值。
angular.module('app', [])
.controller('ctrl', function() {
const vm = this;
vm.isVisible = [];
vm.toggleDropdown = toggleDropdown;
vm.offers = [
{description: 'lorem'},
{description: 'ipsum'},
{description: 'dolor'},
{description: 'sit'},
{description: 'amet'},
]
function toggleDropdown(index) {
vm.isVisible[index] = !vm.isVisible[index];
}
});
<div ng-app="app" ng-controller="ctrl as vm">
<ul class="offer-tiles">
<li ng-repeat="offer in vm.offers track by $index">
<!-- ... -->
<input type="button" value="v" ng-click="vm.toggleDropdown($index)" />
<div class="box-dropdown" ng-show="vm.isVisible[$index]">
<p>{{ offer.description }}</p>
<hr />
...
</div>
</li>
</ul>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.7.2/angular.min.js"></script>
推荐阅读
- javascript - 多个文件检查扩展名是 Pdf
- histogram - ROOT:将根文件与 hadd 和权重相加
- java - 尝试在 Android Studio 中执行单元测试时出现“JUnit 版本 3.8 或更高版本”错误
- node.js - 如何模拟导入?
- c# - 确认电子邮件时 ASP.NET Core 令牌无效,但令牌似乎有效
- r - 将字符向量转换为不带引号的对象名称
- json - java.lang.NoSuchMethodError:com.google.gson.GsonBuilder.setLenient()Lcom/google/gson/GsonBuilder;
- java - 对齐按钮中的 SWT 问题
- php - 如何在 laravel 中从数据库中传递值
- java - 带有 ModelMapper 的 LazyInitializationException (Spring + Hibernate)