当我阅读Angularjs风格指南Y240时,我感到很困惑。
它讨论了为供应商库的全局变量创建一个角常数,以便我们可以注入否则是全局的供应商库。
我的理解是你必须这样做:
<script src="moment.js"></script>在加载angular.js和app.js中的控制器和指令之前,矩对象是一个全局变量。如何使用以下代码使其成为服务,并在需要时注入它?
如果我没有看到全貌,请纠正我。
// constants.js
/* global toastr:false, moment:false */
(function() {
'use strict';
angular
.module('app.core')
.constant('toastr', toastr)
.constant('moment', moment);
})();我的困惑:上面的代码应该使全局变量“瞬间”不再是全局的。这是正确的吗?我认为这是不可能的。时刻仍然是全局变量。
发布于 2015-12-15 03:13:36
要在AngularJS应用程序中使用这样创建的常量:
//declare 'app.core' as a dependency
angular.module('myApp', ['app.core']);
//declare the constant in your injection list
angular.module('myApp').controller('myController', ['$scope', 'moment',
function($scope,moment) {
//use moment as you would normally
var now = moment();
}]);更新
moment仍然是一个全局变量。
约翰·爸爸这么做的原因是:
为什么?:提供了一种注入否则是全局的供应商库的方法。这使您能够更容易地了解组件的依赖关系(避免泄漏抽象),从而提高了代码的可测试性。它还允许您模拟这些依赖项,在有意义的地方。
发布于 2015-12-15 20:38:34
我想也许他们只是想用
要求
或
褐化
因此,当加载lib时,它位于本地作用域的函数(){}中。
https://stackoverflow.com/questions/34280389
复制相似问题