从chrome dev更新angualar.js工厂。工具

时间:2015-09-29 09:17:30

标签: javascript angularjs google-chrome-devtools factory angularjs-factory

有没有办法从开发工具覆盖下载的angular.js factory。 我想从客户端添加一些日志语句,因为我无法通过部署代码来完成。只需在控制台中运行更新的功能,即可轻松更新普通的Javascript函数。
但是,我无法为angular.js factories

做到这一点

1 个答案:

答案 0 :(得分:0)

一般的答案是没有办法。 Angular services are singletons,一旦服务被实例化,the instance is stored in private variable就没有机会覆盖它。

但是,如果工厂被实例化为具有一堆方法的对象,则可以对这些方法进行修补:

var factory = angular.element(document.querySelector('.ng-scope'))
  .injector()
  .get('factoryName');

var factoryMethod = factory.methodName;
factory.methodName = function () {
  console.log(arguments);
  return factoryMethod.apply(factory, arguments);
};

在其他情况下,配方是使用Greasemonkey / Tampermonkey在引导过程中劫持应用程序。这使得可以提供覆盖原始模块的组件的整个新模块。或者为原始模块提供额外的config块,其中可以使用$provide.decorator修改已定义的工厂,或使用$provide.factory重新定义。

相关问题