我有一个特定的功能,当您点击手风琴上的任何面板时,它都会特别有效。现在,我在这里的原因是因为现在当你点击打开或关闭面板时触发功能,我不想要这个,我希望只有当你点击面板时才能使用该功能他们是开放的。我看到我可以通过名为is-open
的东西实现它,但实际上我并不知道如何使用它。
这就是我刚才提到的功能:
$scope.addSportToLines = function(sportObj) {
sportObj.shown = !sportObj.shown;
var firstLeagues = _.first(sportObj.leagues);
if (sportObj.shown || !firstLeagues) {
loaderAlert.show();
$scope.lineSport = sportObj;
$scope.lineLeagues = [];
$scope.deactivateLeagues();
$scope.addLeagueToLines(firstLeagues);
}else {
$scope.defaultLines();
}
};
这是手风琴html:
<accordion close-others="false">
<accordion-group ng-repeat="sport in sports"
ng-show="sport.leagues.length"
ng-click="addSportToLines(sport);">
<accordion-heading>
<div>
{{::sport.name}}
</div>
</accordion-heading>
<div class="list-group">
<a href="javascript:void(0);" class="list-group-item"
ng-repeat="league in sport.leagues"
ng-class="{active: league.active}"
ng-click="addLeagueToLines(league)">{{::league.name}}
</a>
</div>
</accordion-group>
答案 0 :(得分:2)
一个手风琴组可以像这样绑定一个is-open表达式
<accordian-group is-open="myvar">
在你的点击中,你可以查看该值是否设置为true,并且不要做任何你不想做的事情。由于您似乎正在创建动态的手风琴组,因此您必须为&#34; sport&#34;传递一些独特的标识符。进入is-open函数并为每个函数设置/检查该值。像这样:
<accordian-group is-open="accordianStatus[sport.name])">
$scope.accordianStatus = {}; // Map of which sports are open
同样,您必须在项目关闭时将标志设置为false。 然后使用
$scope.addSportToLines = function(sportObj) {
if($scope.accordianStatus[sportObj.name]) { // Already open check
.......