angularjs 컨트롤러에서 밑줄 라이브러리를 어떻게 사용합니까?
이 게시물 : 지난 2 개의 AngularJS limitTo 레코드는
누군가가 _ 변수를 rootScope에 할당하여 라이브러리를 응용 프로그램의 모든 범위에서 사용할 수 있도록 제안했습니다.
그러나 나는 어디에서 해야할지 확실하지 않습니다. 앱 모듈 선언으로 가야합니까? 즉 :
var myapp = angular.module('offersApp', [])
.config(['$rootScope', function($rootScope) { }
그러면 밑줄 lib를 어디에로드합니까? 내 색인 페이지에 ng-app 지시문과 angular-js 및 밑줄 라이브러리에 대한 스크립트 참조가 있습니까?
index.html
:
<head>
</head>
<body ng-app="offersApp">
...
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="scripts/vendor/angular.js"></script>
<script src="scripts/vendor/underscore.js"></script>
...
어떻게하면 되나요?
답변
Underscore를 포함 시키면 밑줄 자체가 window
객체에 첨부 되므로 전체적으로 사용할 수 있습니다.
따라서 Angular 코드에서 그대로 사용할 수 있습니다.
주사를 원하는 경우 서비스 나 공장에서 포장 할 수도 있습니다.
var underscore = angular.module('underscore', []);
underscore.factory('_', ['$window', function($window) {
return $window._; // assumes underscore has already been loaded on the page
}]);
그런 다음 _
앱 모듈에서를 요청할 수 있습니다 .
// Declare it as a dependency of your module
var app = angular.module('app', ['underscore']);
// And then inject it where you need it
app.controller('Ctrl', function($scope, _) {
// do stuff
});
답변
@satchmorun의 제안을 여기에 구현했습니다 :
https://github.com/andresesfm/angular-underscore-module
그것을 사용하려면 :
-
프로젝트에 underscore.js를 포함 시켰는지 확인하십시오
<script src="bower_components/underscore/underscore.js">
-
그것을 얻으십시오 :
bower install angular-underscore-module
-
angular-underscore-module.js를 기본 파일 (index.html)에 추가
<script src="bower_components/angular-underscore-module/angular-underscore-module.js"></script>
-
앱 정의에서 모듈을 종속성으로 추가
var myapp = angular.module('MyApp', ['underscore'])
-
사용하려면 Controller / Service에 주입 된 종속성으로 추가하면 바로 사용할 수 있습니다
angular.module('MyApp').controller('MyCtrl', function ($scope, _) { ... //Use underscore _.each(...); ...
답변
나는 이것을 사용한다 :
var myapp = angular.module('myApp', [])
// allow DI for use in controllers, unit tests
.constant('_', window._)
// use in views, ng-repeat="x in _.range(3)"
.run(function ($rootScope) {
$rootScope._ = window._;
});
에 대한 자세한 내용은 https://github.com/angular/angular.js/wiki/Understanding-Dependency-Injection을 참조 하십시오run
.
답변
이 모듈에서 각도를 살펴볼 수도 있습니다.
답변
lodash를 사용하는 것이 마음에 들지 않으면 https://github.com/rockabox/ng-lodash를 사용해보십시오. lodash를 완전히 감싸서 유일한 종속성이므로 lodash와 같은 다른 스크립트 파일을로드 할 필요가 없습니다.
Lodash는 창 범위에서 완전히 벗어 났으며 모듈 이전에로드 된 “홉핑”이 없습니다.