1

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

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

这是我的例子。我认为这与范围有关(它总是你的范围)。 更新:我取得了一些进展,我将属性操作移到了 compile 函数中,它似乎有所帮助,但现在我得到了一个错误:No controller: ngSwitch.
新人

4

2 回答 2

1

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

如果您想继续使用 ng-switch,我建议您仔细查看 ng-switch 创建的范围(请参阅this)。

于 2013-08-11T22:05:41.137 回答
1

Angularjs 显示错误的原因No controller: ngSwitch是因为ng-switch-when依赖于ng-switch. 因此,您应该添加创建范围ng-switch-when时的属性。ng-switch最简单的方法是$observengSwitch.

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

  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"在模板中声明,这样指令就可以访问它所监视的值。

希望它可以提供一些启示。

于 2013-08-05T23:45:21.673 回答