ngSwitch滑块指令不起作用

时间:2013-07-27 15:35:58

标签: angularjs angularjs-directive

我正在尝试使用ngSwitch和ngAnimate创建一个由this example启发的滑块指令,但没有成功。有一个超时调用next函数增加scope.current变量,ngSwitch应该使用此变量来切换图像。

<div class="slider">
    <img src="..." />
    <img src="..." />
    <img src="..." />
</div>

以下是我的plunker示例。我认为它与范围有关(它总是你的范围)。 UPDATE:我做了一些进展,我将属性操作移到了编译功能,看起来它有点帮助但是现在我收到了一个错误:No controller: ngSwitch
new plunker

2 个答案:

答案 0 :(得分:1)

Angularjs显示错误No controller: ngSwitch的原因是因为ng-switch-when取决于ng-switch。因此,您应在创建ng-switch-when范围时添加ng-switch的属性。最简单的方法是在$observe上使用ngSwitch

这是使编译工作的一种方法

  attrs.$observe('ngSwitch', function () {
      for (i = _i = 0, _len = pages.length; _i < _len; i = ++_i) {
          page = pages[i];
          page.setAttribute('ng-switch-when', i);
      }
  });

但是,由于创建了新范围current,您无法访问ng-switch值,因此动画无效。

为了使指令有效,我认为最简单的方法是在模板中声明ng-switch="current",以便指令可以访问它所监视的值。

希望它可以有所启发。

答案 1 :(得分:1)

我有一个使用ng-if而不是ng-switch的解决方法,请参阅here

如果您想坚持使用ng-switch,我建议您仔细查看ng-switch(see this)创建的范围。