javascript - angular-ui:轮播上的触发事件

标签 javascript angularjs twitter-bootstrap angular-ui angular-ui-bootstrap

我正在使用 angular-UI 的轮播,我想从我的 Controller 触发“上一个”和“下一个”事件。
Github上有关于它的问题,但实际上似乎没有处理:https://github.com/angular-ui/bootstrap/issues/1836

带有 plunker 示例的 Carousel 页面:http://angular-ui.github.io/bootstrap/

关于最佳方法的任何想法? 谢谢!

最佳答案

您可以创建一个自定义指令,在您的范围内公开轮播的下一个和上一个方法:

Plunker Demo

app.directive('carouselControls', function() {
  return {
    restrict: 'A',
    link: function (scope, element, attrs) {
      scope.goNext = function() {
        element.isolateScope().next();
      };
      scope.goPrev = function() {
        element.isolateScope().prev();
      };
      
    }
  };
});

将指令添加到轮播元素,然后您可以在 Controller 范围内调用 goPrev 或 goNext 方法。

<carousel carousel-controls ... ></carousel>
//Call goNext() or goPrev() such as:
<button class="btn btn-primary" ng-click="goNext()">Next Slide</button>

这是一个非常简单的指令,但它是这样工作的:

轮播有方法$scope.next$scope.prev,但我们不能直接从 Controller 访问它们,因为轮播有一个独立的作用域。为了公开它们,在 carouselControls 链接函数中,我们创建了两个方法 goNext 和 goPrev,我们将它们添加到 carouselControls 的范围。

由于 carouselControls 没有独立的作用域,因此传递给链接函数的作用域是其父 Controller 的作用域。我们使用这些方法在元素的 isolatedScope 上调用 nextprev 方法(这是轮播元素,因为这是我们放置carouselControls 指令)。

关于javascript - angular-ui:轮播上的触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30300737/

相关文章:

javascript - if 语句中的 jQuery 悬停函数

css - Twitter Bootstrap 3 - 在词缀滚动上丢失容器全宽

jquery - Bootstrap Datepicker - 仅限月份和年份

javascript - 尽管由 ajax 加载,但 DOM 元素只是偶尔创建

Javascript 不适用于最大/最小按钮?

javascript - 将对象转换为数组

javascript - AngularJS JQuery Ajax 表单提交等效

javascript - 选定的维度转换为 div 表

javascript - 从 JS 脚本创建一个可嵌入的 "widget"

debugging - 在 AngularJS 应用程序中查找错误行