AngularJS:更改特定ng-repeat项目的ng-if值?

时间:2014-02-02 20:53:02

标签: javascript angularjs

我是角色和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; 
    }

1 个答案:

答案 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等)