如何使用browserfy在angular js中为angular谷歌地图传递npm包lodash作为DI



我使用npm作为我的angular应用程序的包管理器,并使用Browserify来包含库。我使用的是angular谷歌地图包: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');

这就是我将它们注入角度模块的方式:

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-google-maps模块不使用角度DI注入lodash,而是假设lodash在全局可用。通过将lodash添加到窗口对象使其全局化:

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

您所需要做的就是:

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

这应该意味着你现在可以做:

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

所以,这是一个工作清单。可能是你做错了其他事情。

最新更新