2015-05-07 4 views
5

Ich versuche, die Underscore/Lodash/_ in der AngularJS Ansicht Vorlage zur Verfügung zu haben. Auf diese Weise kann ich verwenden _ wie unten dargestellt:AngularJs: Unterstreichen/Lodash/_ in der Ansicht Vorlage

<li ng-repeat="number in _.range(100, 125)"><!-- Some logic here --></li> 

Und was das betrifft, können wir eine dieser nützlichen Funktionen von Lodash verwenden.

Wir können dies erreichen, indem Sie gerade hinzufügen _ zu dem $ Rahmen der Steuerungen und Richtlinien wie folgt:

$scope._ = _; 

Aber ich mag eine Konfiguration/Änderung Einmal haben, die _ zu jedem fügt Spielraum für jede Ansichtsvorlage.

Ein Ansatz, den ich gefunden nützlich ist:

$rootScope._ = _; //Have this line in .run() method. 

Dies funktioniert gut für alle Ansichten von Controllern und Richtlinien. Dies funktioniert jedoch nicht für Ansichten isolierter Bereichsrichtlinien. Ich muss erneut ($ scope._ = _;) in der Definition der Direktive hinzufügen.

Gibt es eine einmalige/einmalige Änderung/Konfiguration/Code, die dies erreichen kann?

Hinweis: Die andere Frage How to make lodash work with Angular JS? spricht speziell über die Verwendung von Lodash in ng-Wiederholung. Aber meine Frage bezieht sich auf die Verwendung von lodash in jeder Ansichtsvorlage (einschließlich der Ansichtsvorlage für die Direktive). Dort habe ich eine Einschränkung mit isolierter Bereichsrichtlinie gefunden. Diese

+2

Eine Konstante erstellen und injizieren, wo sie gebraucht wird? Ist nicht wirklich sinnvoll für mich Bibliothek Funktionen in Markup obwohl – charlietfl

+0

mögliche Duplikat von [Wie lodash Arbeit mit Angular JS zu machen?] (Http://stackoverflow.com/questions/23862119/how-to-make-lodash- arbeiten-mit-eckigen-js) – victorkohl

+4

Ich empfehle sehr, einen Filter zu verwenden, anstatt diesen zu Ihrer Ansicht zu führen. Siehe: http://toddmotto.com/everything-about-custom-filters-in-angular-js/ für mehr. – JMP

Antwort

0

ist, wie ich dies tat:

Schritt # 1: include unterstreichen-min.js in Ihrer index.html:

<!-- underscore to be included with angular js --> 
<script src="lib/underscore/underscore-min.js"></script> 

Schritt # 2: Erstellen Sie ein '_' Dienst, den Sie können alle Controller injizieren in die Sie brauchen:

'use strict'; 

angular.module('myApp') 
.factory('_', function($window) { 
    return $window._; // assumes underscore is loaded on the page 
}); 

Schritt 3: Verwenden Sie es, wo immer Sie wie durch die Injektion von ‚_‘:

'use strict'; 

angular.module('myApp') 

.controller('AppCtrl', function($scope, _) { 

    var test = { 
    x: 10, 
    name: 'Ashish Bajaj' 
    } 

    var 2ndTest = _.clone(test); //use underscore 

});