如何使用 browserify 在 angular js 中将 npm 包 lodash 作为 DI 传递给 angular-google-maps?

How to pass npm package lodash as a DI in angular js for angular-google-maps using browserify?

我正在使用 npm 作为我的 angular 应用程序的包管理器,并 Browserify 来包含库。 我正在使用 angular-google-maps 包:http://angular-ui.github.io/angular-google-maps

我得到:

ReferenceError: _ is not defined
    at o (vendor.js:8)
    at Object.load (vendor.js:8)
    at $get (vendor.js:8)
    at Object.r [as invoke] (vendor.js:1)
    at vendor.js:1
    at i (vendor.js:1)
    at Object.r [as invoke] (vendor.js:1)
    at p.instance (vendor.js:2)
    at m (vendor.js:2)
    at a (vendor.js:1)

作为错误。

现在这是我包含 js 文件的方式:

require('lodash');
require('angular-simple-logger');
require('angular-google-maps');

这就是我将它们注入 angular.module 的方式:

var requires = [
        /*What to inject here?*/
        'nemLogging',
        'uiGmapgoogle-maps',
];

angular.module('mapApp',requires);

控制器中包含的内容:

angular.module('mapApp').controller('mapController', 
    function($scope, uiGmapGoogleMapApi, /*What to pass here?*/){
});

请指导在 angular 应用程序中注入什么以及将什么参数传递给我的 angular 应用程序以消除此错误?

您只需:

angular.module('mapApp', requires)
     .value('_', _);

现在应该意味着您可以:

angular.module('myApp').controller('mapController', function ($scope, uiGmapGoogleMapApi, _) {

});

所以这是一个有效的 plnkr。可能是你做错了什么。

angular-google-maps 模块不使用 angular DI 注入 lodash,但假设 lodash 是全局可用的。通过将 lodash 添加到 window 对象来使 lodash 全局化:

window._ = require('lodash'); // this will add it to the global namespace
require('angular-simple-logger');
require('angular-google-maps');