[javascript] Angular 컨트롤러 내에서 밑줄 사용

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

그것을 사용하려면 :

  1. 프로젝트에 underscore.js를 포함 시켰는지 확인하십시오

    <script src="bower_components/underscore/underscore.js">
  2. 그것을 얻으십시오 :

    bower install angular-underscore-module
  3. angular-underscore-module.js를 기본 파일 (index.html)에 추가

    <script src="bower_components/angular-underscore-module/angular-underscore-module.js"></script>
  4. 앱 정의에서 모듈을 종속성으로 추가

    var myapp = angular.module('MyApp', ['underscore'])
  5. 사용하려면 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 .


답변

이 모듈에서 각도를 살펴볼 수도 있습니다.

https://github.com/floydsoft/angular-underscore


답변

lodash를 사용하는 것이 마음에 들지 않으면 https://github.com/rockabox/ng-lodash를 사용해보십시오. lodash를 완전히 감싸서 유일한 종속성이므로 lodash와 같은 다른 스크립트 파일을로드 할 필요가 없습니다.

Lodash는 창 범위에서 완전히 벗어 났으며 모듈 이전에로드 된 “홉핑”이 없습니다.


답변

이 모듈을 사용할 수 있습니다-> https://github.com/jiahut/ng.lodash

이것은 lodash그렇게 하기위한 것입니다underscore


답변