2016-07-15 11 views
1

Ich versuche nur, leere Zeichenfolgen in einem Element zu ersetzen, das Teil von ng-repeat ist, so dass ich dies als ID für ein div-Element verwenden kann. Funktioniert für das erste leere Leerzeichen. Ich möchte ein globales Ersetzen und versuchte etwas wie// g, aber die Anführungszeichen im Code machen es kaputt oder ich mache es nicht richtig.Ersetze leere Zeichenfolge für ein Element in ng-repeat

ich versucht, dieses

<div ng-repeat="list in list"> 
     <div id="{{list.name.replace(' ','_');}}" ></div> 

Antwort

3

Ich empfehle Ihnen einen function zu erstellen und sie in Ihrer Ansicht aufrufen.

Hier ist ein Schnipsel Arbeits:

angular.module('app', []) 
 
    .controller('mainCtrl', function($scope) { 
 
    $scope.list = [ 
 
       { 
 
          "name": "noempties" 
 
       }, 
 
       { 
 
          "name": "a empty string" 
 
       }, 
 
       { 
 
          "name": "more empties a a a a a" 
 
       } 
 
    ]; 
 
    
 
    $scope.replace_chars = function(obj) { 
 
     return obj.name.replace(/\s/g, '_'); 
 
    }; 
 
    });
<!DOCTYPE html> 
 
<html ng-app="app"> 
 

 
    <head> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.7/angular.min.js"></script> 
 
    </head> 
 

 
    <body ng-controller="mainCtrl"> 
 
    <div ng-repeat="lst in list track by $index"> 
 
     <!-- The ng-bind was used only to show how it was after replace --> 
 
     <div id="{{replace_chars(lst)}}" ng-bind="'div id: ' + replace_chars(lst)"></div> 
 
    </div> 
 
    </body> 
 

 
</html>

+0

Das hat funktioniert. Kannst du mir sagen, warum du die ng-bind verwendest? Es funktioniert auch ohne. – bumblebee

+0

Nun, da Sie nur die Div-ID ersetzen möchten, spielt die ng-bind keine Rolle. Es wurde nur zur Anzeige auf dem Bildschirm verwendet. – developer033

+1

Für eine globale Ersetzungsfunktion könnte dies verbessert werden, indem es generischer wird; Übergeben des tatsächlichen Zeichenfolgenwerts, um mit einem Objektdiagramm verglichen zu werden (String vs. obj.name). – TSmith

0

Verwendung ng-bind

<div id="checkText(lst.name);" ng-bind="checkText(lst.name);"></div> 

in Ihrem Controller

$scope.checkText = function(text) { 
    return text.replace(' ','_'); 
    }; 
+0

Wie unterscheidet es sich von meiner Antwort? – developer033

+0

gerade jetzt Ihre Antwort für mich aktualisiert @ developer033 –

+0

Nun, antwortete ich vor 7 Minuten. – developer033