javascript - 从 ui-bootstrap 覆盖一个函数

标签 javascript angularjs

我使用 Bower 在我的应用程序中包含了 angular-bootstrap 库。

我目前使用的(旧)版本包含一个错误,该错误已在较新版本中解决。但是,在我的情况下,尚无法升级

我也想过在我的index.html页面的bower的importlines下面添加一个自定义修改的js文件,但是编译出错。

我确切地知道在库 ui-bootstrap.js 的 .js 中包含错误的正确 LOC,但这些更改不适合该文件,因为我在自动构建系统中开发那只会覆盖我的更改。

因此,我想在我调用错误函数的地方(页面的 Controller 或服务)覆盖函数

这可能吗?如果是这样,我怎样才能最好地覆盖它?

最佳答案

你可以为你想要改变的方法创建一个装饰器。

假设你的工厂如下图所示

app.factory('myService',function(){
  return {
    getData: function() {
      // your code
    }
  };
});

现在如果你想改变 getData() 函数的功能,你可以像下面那样做

app.config(function($provide) {

  $provide.decorator('myService', function($delegate) {
    var oldFunc = $delegate.getData;
    $delegate.getData = function() {
      // your updated code
      return oldFunc();
    };

    return $delegate;
  });
});

关于javascript - 从 ui-bootstrap 覆盖一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38079792/

相关文章:

javascript - Jasmine 对 Angular $timeout 方法的单元测试

twitter-bootstrap - 带有 Bootstrap 3 的 Angular Dialog 指令

javascript - 当所有内容在浏览器窗口中可见时,如何使 div 更改为固定位置?

javascript - 添加 1 周的 JS 日期问题

angularjs - 如何将 GET 变量传递给 Angular 应用程序

angularjs - 如何避免Angularjs中的大量依赖

angularjs - 是否可以在运行时设置调试日志级别?

javascript - Angular 1.3 + ui-router + generator-ng-poly 嵌入嵌套(?) View 不起作用

javascript - 多条路由 Backbone 上的相同事件

javascript - 传递/传入导致异常的 URL 字符串