【问题标题】:Update angualar.js factory from chrome dev. tools从 chrome devtools 更新 angularjs 工厂
【发布时间】:2015-12-26 17:08:59
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    一般的答案是没有办法。 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 重新定义。

    【讨论】:

    • 如何劫持应用程序引导?
    • 而且,我正在开发一个铬嵌入式应用程序。我不确定我是否可以安装插件
    • 那么你应该检查你的选项,如何在加载页面中添加脚本。
    • 这取决于您在页面加载期间登陆的位置以及应用程序的引导方式。您可以plant a new module 现有的一个,或删除'ng-app' 属性并自己进行引导,或monkey-patch 'angular.bootstrap' 方法。
    • 谢谢 :) 修改控制器怎么样?有可能吗?
    猜你喜欢
    • 1970-01-01
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多