, $http $log , , factory NodeLogger, inturn $http, . , factory, factory , - $injector factory $http $http. , factory. $delegate, $log - .
$provide.decorator("$log", function($delegate, $injector) {
var logFn = $delegate.log;
$delegate.log = function(message) {
var NodeLogger = $injector.get('NodeLogger');
NodeLogger.log(message);
logFn.apply(null, arguments);
};
return $delegate;
});
angular.module("app", []).factory("NodeLogger", function($http) {
function log(type, message) {
var logMessage = type + ":" + message;
$http.post("http://localhost:3000/log", "message=" + logMessage);
}
return {
log: log
}
}).config(function($provide) {
$provide.decorator("$log", function($delegate, $injector) {
var logFn = $delegate.log;
$delegate.log = function(message) {
var NodeLogger = $injector.get('NodeLogger');
NodeLogger.log(message);
logFn.apply(null, arguments);
};
return $delegate;
});
}).run(function($log) {
$log.log("Hey");
});;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<div ng-app="app"></div>
Hide result