angularjs:如何使文本与输入文本区域完全相同,包括新行?

时间:2016-02-16 10:00:19

标签: javascript html angularjs

在angularjs中,如何获取输入html textarea的确切文本,我还想跟踪换行符'\n'(在textarea中)。我想将此textarea存储到数据库与输入textarea完全相同。但是它将所有文本都排成一行。

如何检测新行被插入html-area?

Please see the demo

我可以使用<pre> {{someText}}</pre>,但这不会解决我的问题,因为我想存储到数据库中。

  <div class="col-md-12">
      <div class="col-md-6">
         <label >Location Based Address </label>
             <textarea rows="4" cols="25" class="form-control" ng-model="someText"> 
             </textarea>
      </div>
  </div>

5 个答案:

答案 0 :(得分:1)

我相信该模型确实会保存换行符,请参阅this对您的plunkr进行小编辑,使用<pre>标记来显示数据。

此外,当我将数据保存到SharePoint列表时,在“富文本”字段中,它会保存换行符。我认为您的问题是服务器不保留新行。

答案 1 :(得分:1)

请检查我是否编辑了您的plunker代码。 Check updated code

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

  .controller('SomeController', function($scope,$sce) {
    console.log($scope.someText);
    $scope.$watch('someText', function(){
      console.log($scope.someText);
      $scope.text = $scope.someText;
            $scope.text = $scope.text.replace(/\n\r?/g, '<br />');
        $sce.trustAsHtml($scope.text)
    })
  })

希望这会对你有所帮助。

答案 2 :(得分:0)

你可以用\n替换空格并以这种方式存储,但我不确定如何强大&#39;这个解决方案将是。

答案 3 :(得分:0)

来自textarea的值通过someText按原样传递给ng-model="someText"。您无需对控制台中的文本执行任何操作。

如果您想在页面某处打印值,同时在用户输入新行时保留新行,请使用<pre>标记:

<pre>{{ someText }}</pre>

答案 4 :(得分:0)

嗯,我不确定发生了什么,但我会尝试一下所有可能发生的事情:

  1. 使用textarea时,\ n字符存储在ng-model的值中。
  2. 如果您想要显示它们,请使用&lt; pre&gt;或者用\ n替换所有\ n并使用ng-bind-html(https://docs.angularjs.org/#!/api/ng/directive/ngBindHtml
  3. 如果要通过json将它们发送到服务器,则在将数据从服务器发送到客户端时,可能必须转义为\ n。或者它将是你的框架下面的底层层。
  4. 确保您使用的是UTF-8服务器端/数据库,或者您可能遇到\ r \ n和\ n的问题。