あなたは、各コメントのためにreplyActiveビットを割り当てる必要があります。これを行うには、繰り返しオブジェクトを使用できます(ng-repeatを使用していると仮定しています)。オブジェクトにもう1つのプロパティを対話的に追加し、自由に使用できます。
単純な例;
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
\t $scope.commentList = [
\t {
\t "author": "Tugca Eker",
"comment": "You should check this example..."
},
{
\t "author": "Gagan",
"comment": "ng-if not working"
},
{
\t "author": "Tugca Eker",
"comment": "Check it again"
}
];
\t
}
ul li{
padding: 5px;
border: 1px solid black;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-controller="MyCtrl">
<ul>
<li ng-repeat="comment in commentList" ng-init="comment.isReplyActive = false;">
<b>{{comment.author}}</b>: {{comment.comment}}
<br />
<a ng-click="comment.isReplyActive = !comment.isReplyActive;">Reply Now!</a>
<div ng-if="comment.isReplyActive">
<input type="text">
</div>
</li>
</ul>
</div>
StackOverflowの上のスニペット失敗し、私は理由を知りません。このフィディーズをチェックしてください。http://jsfiddle.net/Lvc0u55v/7762/
あなたの間違いは、同じオブジェクト(_reply)をコメントセクションのすべてのインスタンスにバインドすることです。代わりに、それぞれ別のオブジェクトを試してから試してみてください。 –
はい、@ JenishRabadiyaによると、すべてのng-ifに対して同じオブジェクト '_reply'を使用しています。オブジェクトの配列を作成するか、毎回別のオブジェクトを作成します。 –