Javascript 从chrome开发工具更新angualar.js工厂
是否有方法覆盖从开发工具下载的Javascript 从chrome开发工具更新angualar.js工厂,javascript,angularjs,google-chrome-devtools,factory,angularjs-factory,Javascript,Angularjs,Google Chrome Devtools,Factory,Angularjs Factory,是否有方法覆盖从开发工具下载的angular.js工厂。 我想从客户端添加一些日志语句,因为部署代码是无法做到的。只需在控制台中运行更新后的函数,就可以轻松地更新普通Javascript函数但是,对于angular.js工厂我无法做到这一点,一般的答案是没有办法。角度,并且一旦服务被实例化,就没有机会覆盖它 但是,如果工厂被实例化为具有一组方法的对象,则可以对这些方法进行修补: var factory = angular.element(document.querySelector('.ng-s
angular.js工厂
。
我想从客户端添加一些日志语句,因为部署代码是无法做到的。只需在控制台中运行更新后的函数,就可以轻松地更新普通Javascript函数
但是,对于
angular.js工厂
我无法做到这一点,一般的答案是没有办法。角度,并且一旦服务被实例化,就没有机会覆盖它
但是,如果工厂被实例化为具有一组方法的对象,则可以对这些方法进行修补:
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
块,其中定义的工厂可以使用修改或重新定义。我如何劫持应用程序引导?我正在处理chromium嵌入式应用程序。我不确定我是否可以安装插件,然后你应该检查你的选项如何将脚本添加到加载页面。这取决于你在页面加载过程中登录的位置以及应用程序的引导方式。您可以使用现有的方法,或者删除“ng app”属性并自己进行引导,或者使用monkey补丁的“angular.bootstrap”方法。谢谢:)修改控制器怎么样?可能吗?