5

当特定的手风琴部分打开时,我正在尝试执行一项操作。我的用例与这里的这个问题几乎相同,只是我使用的是静态定义的而不是 ng-each。

当 is-open 状态发生变化时,我无法让 $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);

这是一个笨蛋:

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

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

4

2 回答 2

11

与 plunker 一起:plnkr.co/edit/1lnbTa? p=preview

我发现这适用于数组:

JS

$scope.array = [object1,object2,object3,object4];
$scope.isOpen = [false,false,false,false];
$scope.$watch('isOpen', function() {
  console.log("watch isOpen:" + $scope.isOpen);
}, true);

HTML(玉)

accordion-group(ng-repeat='object in array',is-open="$parent.isOpen[$index]")
  accordion-heading
    h4 My Heading {{$index}}
  p My content {{$index}}
于 2013-06-23T19:47:58.547 回答
2

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

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

于 2013-05-17T23:56:46.853 回答