微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

angularjs – angular-ui bootstrap accordion:我如何正确地观察is-open属性?

我正在尝试在特定的手风琴节开始时执行动作.我的用例几乎与此 question here相同,只是我使用的是静态定义的而不是ng-each.

不知何故,当打开状态发生变化时,我无法触发$watch,任何人都可以告诉我为什么这不起作用:

视图:

<accordion close-others="false">
   <accordion-group heading="group1" is-open="acc1open">
    content 1
   </accordion-group>    
   <accordion-group heading="group2" is-open="acc2open">
    content 2
   </accordion-group>  
  </accordion>

控制器:

$scope.acc1open = false;
  $scope.acc2open = true;

  $scope.$watch('acc1open',function(){
      console.log("watch acc1:" +$scope.acc1open);
  },true);

这是一个吸烟者:

http://plnkr.co/edit/Ycms81?p=preview

它在页面加载时一次打印“watch acc1:false”,但在打开手风琴组时则不打印.

解决方法

添加了< span>在AccordionDemoCtrl div中,并将is-open更改为绑定到$parent.acc1open

<accordion-group heading="group1" is-open="$parent.acc1open">

<span ng-click="acc1open = true">Click me to open group 1</span>

指令有自己的范围,变量是自己的.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐