javascript
  • html
  • angularjs
  • replace
  • 2017-12-20 2 views -1 likes 
    -1

    特殊文字を置き換えて文字列からHTML入力を表示したい。文字列からHTML入力を表示する

    HTMLコードは次のとおりです。

    <h3 class="text-center" data-ng-bind-html="finalString"></h3> 
    

    JSコードは以下のようになります。

     function convertStringToInput(){ 
          var string = ' Hi,Cricket match with !!!TEXT!!! on !!!DATE!!! Umpire is !!!TEXT!!! and price is !!!NUMBER!!! items.'; 
    
          var mapObj = { 
           '!!!TEXT!!!': '<input type="text" class="form-control" placeholder="Enter text" data-ng-model="text" />', 
           '!!!DATE!!!': '<input type="date" class="form-control" placeholder="date" data-ng-model="model" />', 
           '!!!NUMBER!!!': '<input type="number" class="form-control" placeholder="Enter Number" data-ng-model="number" />' 
          }; 
          string = string.replace(/!!!TEXT!!!|!!!DATE!!!|!!!NUMBER!!!/gi, function (matched) { 
           return mapObj[matched]; 
          }); 
    
          $scope.finalString = string; 
         } 
         convertStringToInput(); 
    

    予想外は!!!テキスト!テキストボックスとしてのHTML入力に置き換えて、!!! DATE !!! datepickerと!!!! NUMBER!番号への入力タイプ。

    +0

    電流出力は何ですか? –

    +0

    今はその表示のみHi、CricketとUmpireで一致し、価格は項目です。 – Dixit

    +0

    あなたのreplace関数内で 'console.log(マッチした)'を実行するとどうなりますか? –

    答えて

    1

    には、例えば、ngSanitizeを追加し、HTML

    XYZは、アプリケーションモジュール内のJavaScriptファイルに次に、あなたのangularjsバージョン

    ある

    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/X.Y.Z/angular-sanitize.js"></script> 
    

    に含める:

    angular.module('nameOfYourAppModule', ['ngSanitize']) 
    

    その後、$のSCE依存性を注入しますコントローラにそのように追加し、$ scope.finalString = $ sce.trustAshtml(string)を追加します。さらに読書のための

    .controller('myController', function(
        $scope, 
        $sce 
    ) { 
    function convertStringToInput(){ 
          var string = ' Hi,Cricket match with !!!TEXT!!! on !!!DATE!!! Umpire is !!!TEXT!!! and price is !!!NUMBER!!! items.'; 
    
          var mapObj = { 
           '!!!TEXT!!!': '<input type="text" class="form-control" placeholder="Enter text" data-ng-model="text" />', 
           '!!!DATE!!!': '<input type="date" class="form-control" placeholder="date" data-ng-model="model" />', 
           '!!!NUMBER!!!': '<input type="number" class="form-control" placeholder="Enter Number" data-ng-model="number" />' 
          }; 
          string = string.replace(/!!!TEXT!!!|!!!DATE!!!|!!!NUMBER!!!/gi, function (matched) { 
           return mapObj[matched]; 
          }); 
    
    
          $scope.finalString = $sce.trustAsHtml(string); 
          console.log($scope.finalString); 
         } 
         convertStringToInput(); 
    }); 
    

    出典: https://docs.angularjs.org/api/ng/service/ $のSCE

    +0

    ありがとうございました。私はhtmlをhtmlとして信頼するように変換するために小さな間違いを犯します。 – Dixit

    +0

    $ sce.trustAsHtml(string)を忘れましたか? – Ayudh

    +0

    はい、私は忘れました。 – Dixit

    関連する問題