2015-12-15 90 views
3

在我们的项目中,我们将NPM和Browserify一起用于第三方依赖管理,这与AngularJS(感谢CommonJS模块)结合使用效果很好。注入非角度JS库

下面的代码显示的依赖结构,它的伟大工程,具有角的依赖注入:

(function() { 
    'use strict'; 

    var moment = require('moment'); 
    var lodash = require('lodash'); 

    var angular = require('angular'); 

    var app = angular.module('myProject', [ 
     require('angular-ui-router'), 
     require('angular-animate'), 
     require('angular-resource'), 
     require('angular-ui-bootstrap'), 
     require('ng-file-upload'), 
     require('angular-smart-table'), 
    ]); 

    app.constant('moment',moment); 
    app.constant('lodash',lodash); 

})(); 

我的问题是关于像时刻lodash纯JavaScript的库。什么是将它们注入到我的控制器和指令中的最好方法? app.constant() -approach要走的路还是有什么缺点我不考虑?

我意识到这个库有很多“角度映射器”项目,但我并不指望它们得到足够长的支持,因此更愿意坚持原始库。

+1

我会使用'值'而不是'常量',但是,通常这是最好的方式,除非你想要额外的功能(角度特定的修改),我将它放到服务或工厂。 – casraf

+0

[angular-moment](https://github.com/urish/angular-moment) – Maher

+0

[angular-lodash](https://github.com/cabrel/angular-lodash) – Maher

回答

2

对您的问题的评论确实指向了正确的方向 - 首先查找这些库的角化形式。如果没有,那么你可以做一些像 -

var lodash = angular.module('lodash', []); 
lodash.factory('_', function() { 
    return window._; 
}); 

然后使用此模块依赖项,并在您的控制器和服务注入'_'。

即使您使用app.constant,它仍然可以作为依赖项被“注入”。我想,'工厂'方式给了你更多的灵活性。