126

angularjsコントローラー内でアンダースコアライブラリを使用するにはどうすればよいですか?

この投稿で: AngularJS limitTo by last 2 records 誰かが rootScope に _ 変数を割り当てて、ライブラリがアプリ内のすべてのスコープで利用できるようにすることを提案しました。

しかし、私はそれをどこで行うべきか明確ではありません。アプリモジュールの宣言に行くべきですか?すなわち:

var myapp = angular.module('offersApp', [])
            .config(['$rootScope', function($rootScope) { }

しかし、アンダースコアライブラリをどこにロードしますか? インデックス ページに 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>
...  

どうすればこれを達成できますか?

4

6 に答える 6

231

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
});
于 2013-02-19T22:33:22.850 に答える
34

ここで @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. 使用するには、コントローラー/サービスに注入された依存関係として追加すると、すぐに使用できます

    angular.module('MyApp').controller('MyCtrl', function ($scope, _) {
    ...
    //Use underscore
    _.each(...);
    ...
    
于 2013-11-06T18:52:38.783 に答える
3

角度については、このモジュールを参照することもできます

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

于 2013-10-16T04:52:57.617 に答える
1

lodash の使用を気にしない場合は、 https: //github.com/rockabox/ng-lodash を試してみてください。これは lodash を完全にラップするため、それが唯一の依存関係であり、lodash などの他のスクリプト ファイルを読み込む必要はありません。

Lodash は完全にウィンドウ スコープから外れており、モジュールの前にロードされていることを「期待」していません。

于 2014-07-02T19:45:43.407 に答える
-2

このモジュールを使用できます-> https://github.com/jiahut/ng.lodash

これはlodashそうですunderscore

于 2015-04-18T04:24:11.140 に答える