Javascript 如何让ng show在ng repeat中对该范围外声明的变量工作?
我从Angular.js开始,我对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">
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>