首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将文本区域内容绑定到md-card时保留换行。

将文本区域内容绑定到md-card时保留换行。
EN

Stack Overflow用户
提问于 2018-01-01 09:04:53
回答 1查看 691关注 0票数 0

我有一个文本区和一张md卡。

代码语言:javascript
运行
复制
angular.module('dashboard', ['ngMaterial'])
  .config(function($mdThemingProvider) {
    $mdThemingProvider.theme('default')
      .dark()
      .primaryPalette('indigo')
      .accentPalette('yellow');
  })
  .controller('previewCtrl', function() {
    //previewCtrl = this;
    this.previewData = previewData;
  });
代码语言:javascript
运行
复制
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/angular_material/1.1.0/angular-material.min.css">

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-animate.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-aria.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-messages.min.js"></script>

<!-- Angular Material Library -->
<script src="https://ajax.googleapis.com/ajax/libs/angular_material/1.1.0/angular-material.min.js"></script>

<!-- Angular Material Library -->
<script src="https://ajax.googleapis.com/ajax/libs/angular_material/1.1.0/angular-material.min.js"></script>

<div ng-app="dashboard">
  <textarea required type="text" rows="5" ng-model="form.text"></textarea>

  <md-card class="md-whiteframe-9dp card-noimage">
    <md-card-title>
      <md-card-title-text>
        <span class="md-headline">Title</span>
        <span class="md-subhead">Sub heading</span>
      </md-card-title-text>
    </md-card-title>
    <md-card-content ng-bind="form.text">
    </md-card-content>
  </md-card>
</div>

我正在尝试将文本区域中的文本输入到md-card的内容区域。

问题-每当我在textarea中键入<br>\n时,卡片上就显示“

和"\n“而不是显示换行符。我想用换行符代替它们。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-01 10:13:45

要通过AngularJS将HTML注入到HTML中,可以使用ng-bind-html指令而不是ng-bind

它要求您将ngSanitize模块插入应用程序并首先导入它的JS文件

代码语言:javascript
运行
复制
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-sanitize.min.js"></script>

这样,文本被理解为html。因此,<br>标记将呈现为新行。

但是\n不是HTML,所以您可以创建一个过滤器来用如下所示的<br>标记来替换它:

代码语言:javascript
运行
复制
app.filter('newLines', function () {
    return function(text) {
        if(text)
            return text.replace(/\\n/g, '<br/>');
    };
});

现在您可以使用ng-bind-html指令和newLines过滤器,如下所示:

代码语言:javascript
运行
复制
<md-card-content ng-bind-html="form.text | newLines">
</md-card-content>

下面是应用上述修改后的代码:

代码语言:javascript
运行
复制
angular.module('dashboard', ['ngMaterial', 'ngSanitize'])
  .config(function($mdThemingProvider) {
    $mdThemingProvider.theme('default')
      .dark()
      .primaryPalette('indigo')
      .accentPalette('yellow');
  })
  .controller('previewCtrl', function() {
    //previewCtrl = this;
    this.previewData = previewData;
  })
  .filter('newLines', function () {
      return function(text) {
          if(text)
              return text.replace(/\\n/g, '<br/>');
      };
  });
代码语言:javascript
运行
复制
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/angular_material/1.1.0/angular-material.min.css">

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-animate.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-aria.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-messages.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-sanitize.min.js"></script>
<!-- Angular Material Library -->
<script src="https://ajax.googleapis.com/ajax/libs/angular_material/1.1.0/angular-material.min.js"></script>

<!-- Angular Material Library -->
<script src="https://ajax.googleapis.com/ajax/libs/angular_material/1.1.0/angular-material.min.js"></script>

<div ng-app="dashboard">
  <textarea required type="text" rows="5" ng-model="form.text"></textarea>

  <md-card class="md-whiteframe-9dp card-noimage">
    <md-card-title>
      <md-card-title-text>
        <span class="md-headline">Title</span>
        <span class="md-subhead">Sub heading</span>
      </md-card-title-text>
    </md-card-title>
    <md-card-content ng-bind-html="form.text | newLines">
    </md-card-content>
  </md-card>
</div>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48048404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档