Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从chrome开发工具更新angualar.js工厂_Javascript_Angularjs_Google Chrome Devtools_Factory_Angularjs Factory - Fatal编程技术网

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”方法。谢谢:)修改控制器怎么样?可能吗?