我是角色和javascript的新手,所以这可能是一般的javascript问题:
我有一个通过ng-repeat创建的div列表,每个div包含一个ng-if =“expanded == true”,通过单击按钮并运行以下函数使其生效。
如果在该div中,如何仅将ng-if值更改为true?当前设置更改扩展为等于true,然后所有 ng-if材料显示。
//HTML
<div class="panel-body">
<span ng-if="expanded == false">This property is missing several documents. Click <a ng-click="buyChecklist()">here</a> to complete this profile.</span>
</div>
<ul class="list-group" ng-if="expanded == true">
<li class="list-group-item text-right" ng-repeat="reqs in buyReqs">
<span class="pull-left">{{reqs.name}}</span>
<span><a class="btn btn-sm btn-primary" href="">Upload</a></span>
</li>
</ul>
//Controller.js
$scope.buyChecklist = function() {
$scope.expanded = true;
}
答案 0 :(得分:0)
由于您想要更改特定div的扩展属性,这表明您实际上需要每个div的扩展状态而不仅仅是单个扩展状态。所以你需要一个数组:
expanded = [false, false, false, false]; //one per div
然后在你的html模板中,使用ng-repeat循环的当前索引检查特定div的扩展索引:
<span ng-if="expanded[$index]"> .. </span>
请注意使用$index
值。在ng-repeat循环中,您可以使用此变量。
documentation of ng-repeat提到循环中可用的这个和其他变量(即$ first,$ last,$ even,$ odd等)