AngularJS:如何在没有工厂的情况下将下划线注入控制器
请指导我如何在没有工厂的情况下将下划线注入控制器。
与工厂我的代码示例正在运行....在这里。
var myApp = angular.module('myApp', []);
myApp.factory('_', function() {
return window._; //Underscore should be loaded on the page
});
myApp.controller('MainCtrl', function ($scope, _) {
});
但没有工厂,当我尝试在控制器中注入下划线,然后得到错误,如下所示
SyntaxError:missing)在参数列表后错误:[$ injector:modulerr]由于:[$ injector:nomod]模块'myApp'不可用,因此无法实例化模块myApp! 您拼错了模块名称或忘记加载模块名称。 如果注册模块确保您指定依赖关系作为第二个参数。
这里是没有工厂注入控制器下划线的代码。
<div ng-app="myApp" ng-controller="MainCtrl">
</div>
var myApp = angular.module('myApp' , ['underscore']);
myApp.controller('MyCtrl', function ($scope, _)
{
$scope.awesomeThings = [
'HTML5 Boilerplate',
'AngularJS2',
'AngularJS1'
];
var x = _.last($scope.awesomeThings, 2);
_.each(x.reverse(), alert);
});
我错过了一些东西....请告诉我,我需要在代码中纠正。 谢谢
依赖注入只应用于角色的东西(服务,控制器,...)。
所有与angular无关的东西都不应该用于依赖注入。
只要在你的角度控制器之前加载下划线,你可以使用它,因为它将被添加到窗口对象中。
以下将毫无问题地工作:
var myApp = angular.module('myApp' , []);
myApp.controller('MyCtrl', function ($scope)
{
$scope.awesomeThings = [
'HTML5 Boilerplate',
'AngularJS2',
'AngularJS1'
];
var x = _.last($scope.awesomeThings, 2);
_.each(x.reverse(), alert);
});
你可以像这样为下划线创建一个单独的模块
var underscore = angular.module('underscore', []);
underscore.factory('_', ['$window', function($window) {
return $window._; // assumes underscore has already been loaded on the page
}]);
现在将下划线模块注入您的应用程序模块
var myApp = angular.module('myApp' , ['underscore']);
myApp.controller('MyCtrl', function ($scope, _)
{
$scope.awesomeThings = [
'HTML5 Boilerplate',
'AngularJS2',
'AngularJS1'
];
var x = _.last($scope.awesomeThings, 2);
_.each(x.reverse(), alert);
});
链接地址: http://www.djcxy.com/p/77857.html
上一篇: AngularJS: How to inject underscore into controller without factory
下一篇: AngularJS: Injecting service into a HTTP interceptor (Circular dependency)