Come far funzionare lodash con Angular JS?

Sto cercando di usare lodash usarlo nelle direttive ng-repeat , in questo modo:

 
Hello {{n}}

Essere GridController :

 IndexModule.controller('GridController', function () { this._ = _ }) 

Tuttavia non funziona e quindi, nulla viene ripetuto . Se cambio la direttiva in ng-repeat="i in [1,2,3,4,5]" funzionerà.

lodash è già incluso tramite in

prima di angular . Come posso farlo funzionare?

Preferisco introdurre “_” globalmente e iniettabile per i test, vedere la mia risposta a questa domanda Utilizzare il segno di sottolineatura all’interno dei controller

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

Volevo solo aggiungere qualche chiarimento alla risposta di @ beret e @ wires. Hanno sicuramente aiutato e preso in considerazione, ma ottenere l’intero processo in modo che potesse adattarsi a qualcuno. È così che ho impostato il mio ambiente angular con lodash e l’ho fatto funzionare con yeoman gulp-angular per servire correttamente

  • bower install lodash --save (questo aggiunge a bower e salva a bower json)

  • modificare bower json per avere il ricorso al lodash prima che lo faccia l’angular. (Questo aiuta se usi gulp inject e non vuoi inserirlo manualmente in index.html, altrimenti inseriscilo nell’index.html prima del link angular)

  • Crea una nuova costante per la direzione di @ fili.

 'use strict'; angular.module('stackSample') // lodash support .constant('_', window._); 
  • Inietti in qualsiasi servizio angular, filtro o controller come faresti qualsiasi altra cosa:
 .filter('coffeeFilter', ['_', function(_) {...}]); 
  • Per lanciarlo in una vista html angular, inseriscilo nel controller e assegna ad esso una variabile scope:
 .controller('SnesController', function ($scope, _) { $scope._ = _; }) 

Spero che questo aiuti qualcuno a creare il loro sito. 🙂

ng-repeat richiede un’espressione angular, che ha accesso a variabili di ambito angular. Quindi, assegnando _ a this , assegnalo all’object $scope che inserisci nel controller:

 IndexModule.controller('GridController', function ($scope) { $scope._ = _; }) 

dimostrazione

Non sono sicuro di quale versione di Angular stai usando. Sembra che tu abbia appena usato la syntax ‘Controller as’ quando si usa ‘this’ per accedere alle variabili nella dom.

Ecco la soluzione con questo e non usando lo scope. http://plnkr.co/edit/9IybWRrBhlgQAOdAc6fs?p=info

   
Hello {{n}}