我使用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, _) {
});
所以,这是一个工作清单。可能是你做错了其他事情。