2017-06-21 7 views
0

良い一日を皆、今の私はangularJSを使用して、この(stackoverflow textbox)ようなテキストボックスを作成しようとしている..しかし、イムは、そうすることに困難を持つが、私はstrong SOME TEXT HERE /strong**SOME TEXT HERE**を交換する必要がここに私のコードです。..はAngularJSコンパイルモデルのようにStackOverflow

$(document).ready(function() { 
 
    var app = angular.module("appModule", [], function($interpolateProvider) { 
 
    $interpolateProvider.startSymbol('<%'); 
 
    $interpolateProvider.endSymbol('%>'); 
 
    }); 
 

 
    /* ALLOW ANGULAR TO RENDER HTML OUTPUT */ 
 
    app.directive('compile', ['$compile', function($compile) { 
 
    return function(scope, element, attrs) { 
 
     scope.$watch(function(scope) { 
 

 

 
      return scope.$eval(attrs.compile); 
 
     }, 
 
     function(value) { 
 
      element.html(value); 
 
      $compile(element.contents())(scope); 
 
     } 
 
    ) 
 
    }; 
 
    }]); 
 

 
    /* CONTROLLER FOR PROFILE TICKER */ 
 
    app.controller("ProfileTickerController", function($rootScope, $scope, dataService, FileUploader) { 
 
    // INITIAL VALUES FOR PROFILE TICKER 
 
    $scope.ticker = ''; 
 
    $scope.previous = ''; 
 
    $scope.edit = false; 
 

 
    $scope.editTicker = function() { 
 
     $scope.previous = $scope.ticker; 
 
     if ($scope.ticker == "<span class='color-light-grey'>Ticker not set</span>") { 
 
     $scope.ticker = ""; 
 
     } 
 
     $scope.edit = true; 
 
    } 
 

 
    $scope.cancelEdit = function() { 
 
     $scope.ticker = $scope.previous; 
 
     $scope.edit = false; 
 
    } 
 

 
    $scope.saveTicker = function() { 
 
     if ($scope.ticker == "") { 
 
     $scope.ticker = "<span class='color-light-grey'>Ticker not set</span>"; 
 
     } 
 
     $scope.edit = false; 
 
    } 
 

 
    $scope.$watch('ticker', function() { 
 
     if ($scope.ticker == undefined) { 
 
     $scope.ticker = ""; 
 
     } 
 
    }) 
 

 
    $scope.init = function(id) { 
 
     var postData = 'profileID=' + id; 
 

 
     // SETUP AJAX CONFIG 
 
     var config = { 
 
     "method": "POST", 
 
     "url": "ajax/getTicker.php", 
 
     "data": postData, 
 
     "headers": { 
 
      'X-Requested-With': 'XMLHttpRequest', 
 
      'Content-Type': 'application/x-www-form-urlencoded' 
 
     } 
 
     }; 
 

 
     // AJAX TO GET PROFILE TICKER 
 
     dataService.ajaxThis(config).then(function mySuccess(response) { 
 
     // CHECK IF AJAX SUCCESSFUL 
 
     if (response.status != 200) { 
 
      console.log('Ajax error! Profile ticker not fetched. Please reload the page and try again.'); 
 
     } else { 
 
      // GET PROFILE TICKER 
 
      if (response.data == "") { 
 
      $scope.ticker = "<span class='color-light-grey'>Ticker not set</span>"; 
 
      } else { 
 
      $scope.ticker = response.data; 
 
      } 
 

 
     } 
 
     }); 
 
    } 
 

 
    $scope.$on('profileLoaded', function(e, id) { 
 
     $scope.init(id); 
 
    }); 
 
    }); 
 
})
.textarea-non-resize { 
 
\t resize: none; 
 
} 
 

 
.grey-box { 
 
    background: #efefef; 
 
    border: 1px solid #dedede; 
 
    padding: 10px; 
 
} 
 

 
#ticker { 
 
\t height: 42px; 
 
\t background-color: #fff; 
 
    border-top: 1px solid #dedede; 
 
    border-bottom: 1px solid #dedede; 
 
    font-family: 'Oswald', sans-serif; 
 
    text-transform: uppercase; 
 
}
<html> 
 

 
<head> 
 

 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script> 
 

 
</head> 
 

 
<script src="script.js"></script> 
 

 
<body ng-app="appModule" class="ng-scope"> 
 

 
    <div class="row"> 
 
    <div class="col-xs-12 col-sm-12" ng-controller="ProfileTickerController"> 
 
     <div class="form-group"> 
 
     <label for="subject"> 
 
         Ticker 
 
         <span ng-show="!edit"> 
 
          <a href="javascript:void(0);" title="Edit Ticker" ng-click="editTicker()"><i class="glyphicon glyphicon-pencil"></i></a> 
 
         </span> 
 
         <span ng-show="edit"> 
 
          <a href="javascript:void(0);" title="Save Ticker" ng-click="saveTicker()"><i class="glyphicon glyphicon-ok"></i></a> 
 
          <a href="javascript:void(0);" title="Cancel" ng-click="cancelEdit()"><i class="glyphicon glyphicon-remove"></i></a> 
 
         </span> 
 
        </label> 
 
     <textarea name="ticker_edit" id="ticker_edit" class="form-control textarea-non-resize" ng-model="ticker" ng-show="edit" placeholder="Customize your ticker here" required cols="50" rows="4" style="margin-bottom: 10px;"></textarea> 
 
     <div class="grey-box"> 
 
      Preview: 
 
      <div id="ticker" class="text-center"> 
 
      <h3 compile="ticker"></h3> 
 
      </div> 
 
     </div> 
 
     </div> 
 
    </div> 
 
    </div> 
 

 
</body> 
 

 
</html>

あり、ここでスクリプトエラーがありますが、それは私のコンピュータで正常に動作しています。だからとにかく私はどのように上記のコンパイラを使用して上記の文字列を置き換えるだろうか?

答えて

0

Regexを使用して要素のHTMLに値を挿入する前に値を置き換えるのはどうですか?

// replace bold text 
value = value.replace(/\*\*(.*)\*\*/g, "<strong>$1</strong>"); 

上記は単純な例であり、目的に合わせて微調整する必要がありますが、一般的な考え方があります。

+0

実際に私はすでに努力のためにそれをしています..仲間の仲間 – Demonyowh

+0

問題はありません。あなたはそれがうまくいってうれしいです。 –

関連する問題