使用角度控制器内部下划线(Use underscore inside Angular control

2019-07-20 04:34发布

如何使用下划线库angularjs控制器内部?

在这个帖子: AngularJS limitTo由过去的2条有人建议到_变量分配到rootScope使该库将提供给应用程序内的所有范围。

但我不清楚的地方去做。 我的意思是它应该去上的应用程序模块声明? 即:

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

但后来我在哪里加载强调的lib? 我有我的索引页面上NG-程序指令和脚本参照这两个角的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>
...  

如何实现这一目标?

Answer 1:

当你有下划线,它自身附加到window对象,所以是全球范围内提供。

因此,作为 - 是你可以用它从角码。

你也可以把它包装起来的服务或工厂,如果你想它被注入:

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
});


Answer 2:

我已经实现@ 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. 添加角下划线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(...); ... 


Answer 3:

我用这个:

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



Answer 4:

您也可以看看这个模块的角

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



Answer 5:

如果你不介意使用lodash尝试https://github.com/rockabox/ng-lodash它包装lodash彻底所以它是唯一的依赖,你不需要加载任何其它脚本文件lodash等。

Lodash是完全关闭的窗口范围,并没有“希望”,它一直在你的模块之前加载。



Answer 6:

你可以使用这个模块- > https://github.com/jiahut/ng.lodash

这是lodash所以没有underscore



文章来源: Use underscore inside Angular controllers