2016-06-20 22 views
1

テキスト領域に、テキストファイルからの書式付き文字を入力しようとしています。このテキストファイルには{{client.name}}{{client.address}}のようなオブジェクトが含まれていますが、これは特定のクライアントの属性の値に置き換えます。ここで私は以前、私は、クライアントのテーブルからデータを呼んでいたここまで、文字列置換パラメータ値角度

$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); 
    }); 
}; 

を持っているコードです:

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"); 
}); 

は、そして、これは私が移入しようとしている分野である:

<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> 

残念ながら、置き換えは行われません。私はjavascriptのドキュメントで見たように置換をフォーマットしようとしましたが、無駄です。

以下の議論あたり

答えて

0

Editted *あなたがのように見えるクライアントのリストを持っている[{名: 'ハンク・アーロン'}、{名: 'サンディー・コーファックス'}、{名: 'ボー・ジャクソン'}] 、およびクライアントのリストの名前で置き換えたい値 '{{client.name}}'を含むテンプレート文字列が含まれています。

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)); 
      } 
     }); 
    }; 
}]); 

とあなたの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

はい、他のスレッドは、多くのフィードバックを受けていなかったと私は置き換えることができます感じました。 $ scope.flyerdescriptionが文字列を保持していない場合は、そうでない場合はどうすればこれらのフィールドをJSONデータで置き換えることができますか? –

+0

ああ、私は間違いを認識しました。$ scope.flyerdescription.replace(.....)は、置き換えられた文字列の値を返します。元の文字は変更されません。あなたがする必要があるのは、$ scope.flyerdescription = $ scope.flyerdescription.replace(/ {{client.name}}/g、$ scope.client.name)を呼び出すことによってそれを取得することです。あなたの代わりの呼び出しの文字列に注意してください、あなたは正規表現のアポストロフィを必要としません – andrewkodesgood

+0

私は瞬時に試してみます –

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>