2016-06-20 18 views
1

Ich versuche, einen Textbereich mit einem formatierten Buchstaben zu füllen, der aus einer Textdatei stammt. Diese Textdatei enthält Objekte wie {{client.name}} und {{client.address}}, die ich durch den Wert des spezifischen Clientattributs ersetzen möchte. Hier ist der Code Ich habe so weit,Zeichenfolge Ersetzen mit Parameterwert Angular

$scope.loadFlyer = function() { 
    $http.get("/assets/clientwelcome.txt").then(function(res){ 
     $scope.flyerdescription = res.data; 
     $scope.flyerdescription = $scope.flyerdescription.replace(/{{client.name}}/g, $scope.client.name); 
    }); 
}; 

Wo früher ich die Daten von der Client-Tabelle genannt hatte:

myApp.controller('ClientCtrl', ['$scope', '$http', '$routeParams', function($scope, $http, $routeParams) { 
$scope.clients = []; 
$http.get('/client').success(function(data, status, headers, config) { 
    $scope.clients = data; 
    if (data == "") { 
     $scope.clients = []; 
    } 
}).error(function(data, status, headers, config) { 
    console.log("Ops: could not get any data"); 
}); 

und das ist das Feld, das ich zu füllen versuchen:

<div class="form-group"> 
    <label class="control-label" for="flyer-description">Description</label> 
    <textarea style="height:400px" class="form-control" id="flyer-description" ng-model="flyerdescription"></textarea> 
</div> 

Leider wird kein Austausch durchgeführt. Ich habe versucht, die ersetzen, wie ich in den Javascript-Dokumenten gesehen habe, aber ohne Erfolg.

Antwort

0

Editted * pro Diskussion unter

Sie haben eine Liste von Kunden, die aussieht wie [{name: 'Hank Aaron'}, {name: 'Sandy Koufax'}, {name: 'Bo Jackson'}] und eine Vorlagenzeichenfolge, die den folgenden Wert enthält: '{{client.name}}', den Sie durch einen Namen aus Ihrer Kundenliste ersetzen möchten.

myApp.controller('ClientCtrl', ['$scope', '$http', '$routeParams', function($scope, $http, $routeParams) { 
    $scope.clients = []; 
    $http.get('/client').success(function(data, status, headers, config) { 
     $scope.clients = data; 
     if (data == "") { 
      $scope.clients = []; 
     } 
    }).error(function(data, status, headers, config) { 
     console.log("Ops: could not get any data"); 
    }); 

    $scope.loadFlyer = function() { 
     $http.get("/assets/clientwelcome.txt").then(function(res){ 
      $scope.flyerdescription = res.data; 
      $scope.descriptions = []; 
      for(var i=0; i<$scope.clients.length; i++){ 
       $scope.descriptions[i].push($scope.flyerdescription.replace(/{{client.name}}/g,$scope.clients[i].name)); 
      } 
     }); 
    }; 
}]); 

und in Ihren HTML

<div class="form-group"> 
    <div ng-repeat="description in descriptions"> 
     <label class="control-label" for="flyer-description">Description</label> 
     <textarea style="height:400px" class="form-control" id="flyer-description" ng-model="description"></textarea> 
    </div> 
</div> 
+0

Ja, der andere Thread Empfang nicht viel Feedback und ich fühlte, ersetzt werden könnte. Wenn $ scope.flyerdescription keine Zeichenfolge enthält, wie könnte ich diese Felder sonst mit den JSON-Daten ersetzen? –

+0

Agh, ich habe meinen Fehler bemerkt, $ scope.flyerdescription.replace (.....) gibt nur den Wert der Zeichenkette mit den Ersetzungen aus, es ändert nicht das Original. Was Sie tun müssen, ist es zu erfassen, indem Sie $ scope.flyerdescription = $ scope.flyerdescription.replace (/ {{client.name}}/g, $ scope.client.name); vorsichtig mit den Zeichenfolgen in Ihrem Ersetzen Anruf, brauchen Sie keine Apostrophe für Regex – andrewkodesgood

+0

Okay, werde ich momentan versuchen –

0
<html> 
<head> 
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
</head> 
<body> 
<div ng-app="demoApp" ng-controller="validationCtrl" class="form-group"> 
    <label class="control-label" for="flyer-description">Description</label> 
    <textarea style="height:100px" class="form-control" id="flyer-description" ng-model="stringname 
"></textarea> 
</div> 
<script> 
//This is controller 
var app = angular.module('demoApp', []); 
app.controller('validationCtrl', function($scope) { 
    $scope.stringname = 'angular123456 test demo'; 
    $scope.stringname = $scope.stringname.replace('test', ""); 
}); 
</script> 
</body> 
</html> 
Verwandte Themen