【问题标题】:Managing scope in nested UI Bootstrap accordions在嵌套的 UI Bootstrap 手风琴中管理范围
【发布时间】:2014-04-15 02:04:22
【问题描述】:

我正在使用 UI-Bootstrap 和这个简单的手风琴菜单。我尝试嵌套它们,但无法获取嵌套元素的范围。

ng-click 也不起作用,我猜是因为它已经用于打开和关闭手风琴了。有没有办法从子元素获取父元素?

DEMO

HTML:

<div ng-controller="accCtrl">
<accordion close-others="oneAtATime">
  <accordion-group heading="Classic Accoridion (1)" is-open="$parent.step1">
    <a href="" ng-click="clasClick()">Classic Click</a>
  </accordion-group>
  <accordion-group heading="Nested Accordian (2)" is-open="$parent.step2">
    <accordion close-others="oneAtATime">
      <accordion-group heading="Test (3)" is-open="$parent.step3">
        <a href="" ng-click="nestClick()">Nested Click</a>
      </accordion-group>
    </accordion>
  </accordion-group>
</accordion>
<p>
  Step1: {{step1}}
  <br/>Step2: {{step2}}
  <br/>Step3: {{step3}}
  <br/>
  <a href="" ng-click="openTwo()">Open Two</a>
  <br/>
  <a href="" ng-click="openThree()">Open Three</a>
</p>

JS:

function accCtrl($scope, $http, $timeout) {
    $scope.oneAtATime = true;

    $scope.step1 = true;
    $scope.step2 = false;
    $scope.step3 = false;


    $scope.openTwo = function() {
        $scope.step2 = true;
    }

    $scope.openThree = function() {
        $scope.step3 = true;
    }

    $scope.clasClick = function() {
        console.log("classic clicked");
    }

    $scope.nestClick = function() {
        console.log("nested clicked");
    }
}

【问题讨论】:

    标签: javascript angularjs accordion angularjs-scope angular-ui-bootstrap


    【解决方案1】:

    看起来每个手风琴指令都在创建自己的范围。有关更多详细信息,您必须在 https://github.com/angular-ui/bootstrap/blob/master/src/accordion/accordion.js 上查看手风琴的实现

    要访问父级的父级,您可以像这样输入 $parent.$parent:

    <accordion close-others="oneAtATime">
      <accordion-group heading="Classic Accoridion (1)" is-open="$parent.step1">
        <a href="" ng-click="clasClick()">Classic Click</a>
      </accordion-group>
      <accordion-group heading="Nested Accordian (2)" is-open="$parent.step2">
        <accordion close-others="oneAtATime">
          <accordion-group heading="Test (3)" is-open="$parent.$parent.$parent.step3">
            <a href="" ng-click="$parent.$parent.$parent.nestClick()">Nested Click</a>
          </accordion-group>
        </accordion>
      </accordion-group>
    </accordion>
    

    【讨论】:

    • 是他们进入这个 $scope 的另一种方式吗?如果我有更多嵌套的手风琴,我会花很长时间来写 $parent.$parent...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-17
    相关资源
    最近更新 更多