从 chrome 开发人员更新 angualar.js 工厂。工具
Update angualar.js factory from chrome dev. tools
有没有办法覆盖从开发工具下载的 angular.js factory
。
我想从客户端添加一些日志语句,因为我无法通过部署代码来完成。只需 运行 控制台中的更新功能即可轻松更新正常 Javascript 功能。
但是,我无法做到 angular.js factories
普遍的回答是没办法。 Angular services are singletons, and once the service was instantiated, 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 or redefined with $provide.factory.
修改
有没有办法覆盖从开发工具下载的 angular.js factory
。
我想从客户端添加一些日志语句,因为我无法通过部署代码来完成。只需 运行 控制台中的更新功能即可轻松更新正常 Javascript 功能。
但是,我无法做到 angular.js factories
普遍的回答是没办法。 Angular services are singletons, and once the service was instantiated, 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 or redefined with $provide.factory.