Heim > Fragen und Antworten > Hauptteil
我在html里面动态设置了p的id代码如下:
<p ng-repeat="item in items">
<p id="{{item.name}}" class="ng-hide"> {{item.name}} </p>
<p>
html解析之后能出来动态id的效果,类似于这样:
<p ng-repeat="item in items">
<p id="name1" class="ng-hide"> name1 </p>
<p id="name2" class="ng-hide"> name2 </p>
<p id="name3" class="ng-hide"> name3 </p>
<p>
我想要动态的控制这些p显示还是不显示。我在js里面写了这样的代码:
html:
<input type="button" ng-click="show(item.name)">
js:
$scope.show=function(name){
document.getElementById(name).style.display = "block";
}
结果并没有实现我想要的效果,还是每次点击都会显示三个p。有什么办法能实现我想要的效果么?
伊谢尔伦2017-05-15 17:10:52
item里面加一个字段"isShow", 默认值为false,
<p ng-repeat="item in items">
<p id="{{item.name}}" class="ng-hide" ng-show="item.isShow"> {{item.name}} </p>
<p>
点击按钮的时候,isShow的值制反。
html:
<input type="button" ng-click="show(index)">
js:
$scope.show=function(index){
$scope.items[index].isShow = !$scope.items[index].isShow;
}
大家讲道理2017-05-15 17:10:52
建议把你的数据重新组织一下,用ng-hide控制元素隐藏与否:
`[
{
id:'id1',
name:'name1',
hide:false //配合nd-hide实现元素隐藏和显示
},
{
id:'id2'
name:'name2',
hide:true
}
//...
]
----------
<p ng-repeat="item in items">
<p id="item.id" ng-hide="item.hide" ng-bind="item.name"></p>
<p>`
写的比较简单,有问题再问