Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何让ng show在ng repeat中对该范围外声明的变量工作?_Javascript_Jquery_Angularjs - Fatal编程技术网

Javascript 如何让ng show在ng repeat中对该范围外声明的变量工作?

Javascript 如何让ng show在ng repeat中对该范围外声明的变量工作?,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我从Angular.js开始,我对ng show有一个问题 当我点击第一个区块#第一个区块时,第二个区块#第二个区块将切换其ng show/ng hide。这很有效 但是当我单击第三个块#第三个块时,我想要相同的行为。 那不行 我尝试了ng click=“show=true”,但没有成功 <div ng-controller="CommentController"> <div id="first-block" ng-click="show = !show">

我从Angular.js开始,我对
ng show
有一个问题

当我点击第一个区块
#第一个区块
时,第二个区块
#第二个区块
将切换其ng show/ng hide。这很有效

但是当我单击第三个块
#第三个块
时,我想要相同的行为。
那不行

我尝试了
ng click=“show=true”
,但没有成功

<div  ng-controller="CommentController">

    <div id="first-block"  ng-click="show = !show">
        <!--first block-->   
    </div>

    <div id="second-block"  ng-show="show" >
        <!--second block that toggle show/hide when I click on first block.-->    
    </div>

    <div ng-repeat="answer in answers" > 

        <div id="third-block" ng-click="show = !show">
             <!--third block. Nothing is happening when I click on this one.-->   
        </div>

    </div>
</div>


感谢您的帮助

因为ng repeat创建了一个新的作用域,并且其中的转置元素位于一个单独的作用域中,所以您可以使用类似

<div id="first-block"  ng-click="state.show = !state.show">1</div>
<div id="second-block" ng-show="state.show">2</div>
<div ng-repeat="answer in answers" >
    <div id="third-block" ng-click="state.show = !state.show">{{$index}}</div>
</div>
演示:


或者使用
$parent

<div id="first-block"  ng-click="show = !show">1</div>
<div id="second-block"  ng-show="show">2</div>
<div ng-repeat="answer in answers" >
    <div id="third-block"  ng-click="$parent.show = !$parent.show">{{$index}}</div>
</div>
1
2.
{{$index}}

演示:

ng repeat
在每次迭代中创建一个新范围作为当前范围的子范围

要访问父作用域,您可以使用
$parent
。例如:

<div id="first-block"  ng-click="show = !show">
    <!--first block-->   
</div>

<div id="second-block"  ng-show="show" >
    <!--second block that toggle show/hide when I click on first block.-->    
</div>

<div ng-repeat="answer in answers" > 

    <div id="third-block" ng-click="$parent.show = !$parent.show">
         <!--third block. Nothing is appening when I click on this one.-->   
    </div>

</div>



看看AngularJS对

的解释,其中一个解决方案比另一个好吗?
<div id="first-block"  ng-click="show = !show">
    <!--first block-->   
</div>

<div id="second-block"  ng-show="show" >
    <!--second block that toggle show/hide when I click on first block.-->    
</div>

<div ng-repeat="answer in answers" > 

    <div id="third-block" ng-click="$parent.show = !$parent.show">
         <!--third block. Nothing is appening when I click on this one.-->   
    </div>

</div>