动态创建变量并为其赋值

时间:2014-12-16 21:29:12

标签: angularjs ng-repeat ng-show

我有对象列表 使用ng-repeat我将这些对象绑定到HTML元素。 在我的ng-loop中我有一个按钮,当用户点击这个按钮时我想显示下一级HTML元素。 意思是,我有外部重复循环(第1级)和内部重复循环(第2级)。 为了显示内部HTML元素,例如标签,我需要使用ng-show。

但是如果我使用单个变量,所有其他的第二级元素也是可见的。 我只希望特定的HTML可见。

如何将ng-show绑定到变量以及如何为此变量设置值。

2 个答案:

答案 0 :(得分:1)

认为你想要的是在ng-repeat内定义一个项目级变量。

您可以使用ng-init设置项级变量。此变量将在为ng-repeat的每次迭代创建的子范围中创建。

然后,您可以使用按钮切换(或应用任何逻辑)此变量。然后,我建议使用ng-if而不是ng-show来阻止为用户不想看到的项生成DOM元素。

<div ng-repeat="outerItem in outerList" ng-init="show = false">
   <button ng-click="show = !show">show/hide inner</button>
   <div ng-if="show" ng-repeat="innerItem in innerList">
     ...
   </div>
</div>

答案 1 :(得分:0)

根据您的描述很难确切地说出您的意思,但您可以将ng-show绑定到传递名称的函数,然后根据该函数返回true或false。

        <div ng-show="checkIfShow('dynamicName')">Something</div>


        $scope.checkIfShow = function(name) {
           // check name for whatever you are looking for to show/hide and return true/false
        };

您可以轻松地在JS中创建一个地图,其名称为&#39;传入是关键,并与之相关。