Angular - 如何在角度ui手风琴上正确应用is-open属性?

时间:2014-12-26 23:33:32

标签: javascript angularjs angular-ui

我有一个特定的功能,当您点击手风琴上的任何面板时,它都会特别有效。现在,我在这里的原因是因为现在当你点击打开或关闭面板时触发功能,我不想要这个,我希望只有当你点击面板时才能使用该功能他们是开放的。我看到我可以通过名为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>

1 个答案:

答案 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

        .......