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