divをクリックして、同じ「種類」の他のすべてのdivを非表示にしようとすると、この問題が発生します。基本的に、子スコープから他のすべての「兄弟」スコープに変数を設定する必要があります。
これを説明するために、私は以下を作成しました:
HTML
<div ng-app="myApp">
<div ng-controller="MyCtrl">
<div ng-repeat="model in models" ng-controller="MyChildCtrl">
<a ng-click="toggleVisibility()">toggle {{ model.name }} {{ visibility }}</a>
<div ng-show="visibility">
{{ model.name }}
</div>
</div>
</div>
</div>
JavaScript
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
console.debug('scope');
$scope.models = [
{ name: 'Felipe', age: 30 },
{ name: 'Fernanda', age: 28 },
{ name: 'Anderson', age: 18 }
];
}
function MyChildCtrl($scope) {
$scope.visibility = false;
$scope.toggleVisibility = function() {
$scope.visibility = !$scope.visibility;
}
}
JSFiddle: http: //jsfiddle.net/fcoury/sxAxh/4/
divの1つを表示するたびに、クリックされたものを除いて、他のすべてのdivが閉じられるようにしたいと思います。
何か案は?