私はlodashをng-repeat
ディレクティブで次のように使用しようとしています:
<div ng-controller="GridController" ng-repeat="n in _.range(5)">
<div>Hello {{n}}</div>
</div>
GridController
であること:
IndexModule.controller('GridController', function () {
this._ = _
})
ただし、機能していないため、repeatedにはなりません。ディレクティブをng-repeat="i in [1,2,3,4,5]"
に変更すると機能します。
lodash
は、angular
の前の<script>
で<header>
を介して既に含まれています。どうすればそれを機能させることができますか?
私は '_'をグローバルに導入し、テストのために注入可能にすることを好みます。この質問に対する私の答えを参照してください コントローラー内でアンダースコアを使用
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._;
});
@beretと@wiresの答えに明確化を加えたかっただけです。彼らは間違いなくその助けを手に入れたが、プロセス全体を整頓することは誰かに合うかもしれない。これは、lodashでangular環境を設定し、正しく動作するようにyeoman gulp-angularで動作させる方法です。
bower install lodash --save
(これはbowerに追加され、bower jsonに保存されます)
バウアーjsonを変更して、angularが実行される前にlodashをロードします。 (これは、gulp injectを使用していて、index.htmlに手動で配置したくない場合に役立ちます。そうでない場合は、index.htmlのangularリンクの前に配置します)
@wiresの方向ごとに新しい定数を作成します。
'use strict'; angular.module('stackSample') // lodash support .constant('_', window._);
.filter('coffeeFilter', ['_', function(_) {...}]);
.controller('SnesController', function ($scope, _) { $scope._ = _; })
これがサイトのセットアップに役立つことを願っています。 :)
ng-repeat
には、Angularスコープ変数にアクセスできるAngular式が必要です。したがって、代わりに_
をthis
に割り当て、コントローラーに挿入する$scope
オブジェクトに割り当てます。
IndexModule.controller('GridController', function ($scope) {
$scope._ = _;
})
使用しているAngularのバージョンがわかりません。 「this」を使用してdom内の変数にアクセスする場合は、「Controller as」構文を使用する必要があります。
これは、スコープを使用せずにこれを使用したソリューションです。 http://plnkr.co/edit/9IybWRrBhlgQAOdAc6fs?p=info
<body ng-app="myApp" ng-controller="GridController as grid">
<div ng-repeat="n in grid._.range(5)">
<div>Hello {{n}}</div>
</div>
</body>