2015-12-15 87 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,它仍然可以作爲依賴項被「注入」。我想,'工廠'方式給了你更多的靈活性。