从引导程序覆盖ng单击



假设我正在自定义angularjs引导程序转盘并将其作为指令。我想自定义ng单击在每个左/右箭头上调用的当前函数,以便它在引导程序中定义的原始函数之前调用一个自定义函数。我知道可以在点击中调用多个函数

ng-click = "customFunction();originalFunctionFromBootstrap()"

但是,在angular carousel中,左右箭头是在其引导模板中定义的,我不想使用$templatecache修改模板。有没有一种方法可以在我的控制器中添加新的ng点击,而不必修改模板缓存?

编辑:我目前可以使用的解决方法是使用

document.querySelector('.left.carousel-control').addEventListener('click', function(){...})

当然,这不是一种棱角分明的方式。另外,如果我从ng触摸使用ng点击,这将不会被调用。有没有办法修改ng点击?

如果继承指令的作用域,则可以将库函数保存在变量中,并用逻辑覆盖该函数。然后调用保存在变量上的函数,这样一切都可以继续工作。

var _superClickMethod = scope.originalFunctionFromBootstrap;
scope.originalFunctionFromBootstrap = function () {
  // custom logic
  _superClickMethod();
}

另一个解决方案是将carrusel引导插件封装在您的指令中。我推荐最后一种选择。

我最终做的是:

document.querySelector('.left.carousel-control').setAttribute('ng-click', 'customFunction()');
$compile(document.querySelector('.left.carousel-control'))(scope);

这解决了我的问题。

最新更新