如果从ng-repeat中控制,则ng-hide或ng-show不起作用

时间:2015-02-01 17:05:21

标签: angularjs ng-repeat ng-show ng-hide

如果点击ng-repeat中的任何按钮,我试图隐藏div。然而它似乎没有用,它让我想到如果从ng-repeat中控制ng-hide或ng-show是不行的?

<div data-ng-hide="showChooseHardware">
    <table class="table">
        <tbody>
            <tr data-ng-repeat="hardware in hardwares">
                <td>{{hardware.name}}</td>
                <td>
                    <button type="button" class="btn" data-ng-click="showChooseHardware=!showChooseHardware"/>
                </td>
            </tr>
        </tbody>
    </table>
</div>

2 个答案:

答案 0 :(得分:2)

这是因为ng-repeat为每个模板创建了一个新的范围,并且由于原型继承在JavaScript(和AngularJS)中的工作原理。

使用对象:

$scope.viewModel = { showChooseHardware: false };

HTML:

data-ng-hide="viewModel.showChooseHardware"

data-ng-click="viewModel.showChooseHardware=!viewModel.showChooseHardware"

可以找到关于这个问题的一个很好的解释here

我建议在这种情况下使用ng-show,因为变量名为showChooseHardware

答案 1 :(得分:1)

ngRepeat指令在每次迭代中为数组中的每个项创建新范围。它可能会产生问题,你有。