4

如何使用 ng-model 在文本区域中显示 html?或者如何禁用或撤消我的 ng 模型的清理功能?

我可以使用 ng-bind-html-unsafe 正确显示数据,如下例所示,但我无法再使用 $scope.formData[data.name] 访问输入。

<textarea ng-bind-html-unsafe="formData[data.name]"></textarea>

当我尝试这个时,它只显示经过清理的代码,我可以使用 $scope.formData[data.name] 访问输入:

<textarea ng-model="formData[data.name]"></textarea>

输入经过编码,如下所示:

Funktionalit&auml;t  &quot;isHybrid&quot;,  &Uuml;bersicht &quot;Kategorien anzeigen&quot; / &quot;Ki

是否有任何过滤器/开箱即用的角度方式,还是我必须创建一个指令来解决这个问题?

更新:我通过禁用 php 端的编码跳过了这个问题,但也许仍然有一个很好的解决方案可以使用 angularjs 使用 html-tag 或过滤器手动解码数据?

4

1 回答 1

-1

不知道你是否已经修复了你的代码(我猜在写这个问题的时候已经修复了),但我遇到了同样的问题,并且这样做了,使用从 ngModel 获取数据并将其更新为的辅助指令出色地:

yourApp.controller('HtmlCtrl', function(){
  $scope.items = [{htmlField:'<p>stuff</p>'},{htmlField:'<p>more stuff</p>'}];
});

yourApp.directive('htmlText', function(){
  return {
    'restrict': 'A',
    'require': 'ngModel',
    'link': function(scope,element,attrs,model) {
      model.$formatters.push(function(val){
        return val.htmlField;
      });

      model.$parsers.push(function(val){
        model.$modelValue.htmlField = val;
      });
    } 
  };
});

HTML看起来像

<tr ng-repeat="item in items">
  <td><textarea ng-model="item" html-text></textarea></td>
</tr>
于 2013-11-20T22:27:34.587 回答