Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.js"></script>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body ng-app="myApp">
</body>
</html>
 
var app = angular.module('myApp', []);
// provider 可配置服务
app.provider('A', ['$logProvider', function (LogProvider) {
    
    var isDebug = true;
    
    this.debugEnabled = function (flag) {
        LogProvider.debugEnabled(!!flag);
    };
    
    this.$get = ['$log', function (log) {
        return {
            debug: function (msg) {
                log.debug(msg);
            }
        };
    }];
}]);
// factory 
app.factory('B', function ($log) {
   return {
       debug: function (msg) {
           $log.debug(msg);
       }
   };    
});
// service 构造函数
app.service('C', function ($log) {
    this.debug = function (msg) {
        $log.debug(msg);
    };
});
// constant 常量
app.constant('D', 'D constant');
app.constant('D', 'modified'); // 无效
// value
app.value('E', {
    debug: function (msg) {
        console.log(msg);
    }
});
// decorator
app.config(function ($provide) {
    $provide.decorator('A', function ($delegate, $log) {
        $delegate.error = function (msg) {
            $log.error(msg);
        };
        return $delegate;
    });  
});
app
    .config(function(AProvider, D) {
//         AProvider.debugEnabled(false);
        console.log('config: ' + D);
    })
    .run(function (A) {
       A.debug('A provider') ;
    })
    .run(function (B) {
       B.debug('B factory');
    })
    .run(function (C) {
       C.debug('C service');
    })
    .run(function (D) {
       console.log(D);
    })
    .run(function (E) {
       E.debug('E value');
    })
    .run(function (A) {
       A.error('A decorator') ;
    });
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
Lovesueeepro
0viewers