Angular $ sce.trustAsHtml过滤掉PHP代码

时间:2014-07-20 13:37:24

标签: php angularjs

我正在尝试使用$ sce.trustAsHtml作为过滤器复制ng-bind-html-unsafe,如下所示:https://stackoverflow.com/a/19705096/1463434

当我尝试传递如下文字时:

"Code: <?php echo strtotime($user->created_at)*1000; ?>"

它呈现为:

"Code: created_at)*1000; ?>"

如何呈现整个文本?

更新

我的代码如下:

HTML:     &lt; p ng-bind-html =“message.messagebody | newlines | unsafe”&gt;&lt; / p&gt;

过滤器:

app.filter('newlines', function () {
  return function (text) {
    return text.replace(/\n/g, '<br/>');
  }
})

app.filter('unsafe', ['$sce',
  function ($sce) {
    return function (val) {
      return $sce.trustAsHtml(val);
    }
  }
])

我正在使用ng-bind-html,这样无论何时输入新行,它都会被转换为“&lt; br /&gt;”标记并在浏览器中呈现时显示为新行。

1 个答案:

答案 0 :(得分:0)

请参阅此fiddle

只需在html中使用angular变量。

HTML

<div ng-app="app" ng-controller="TestController">
    <h3>Not worked</h13>
    <pre>Code: <?php echo strtotime($user->created_at)*1000; ?></pre>

    <h3>Worked</h3>
    <pre>{{data.html}}</pre>
</div>

的JavaScript

var app = angular.module('app', []);
app.controller('TestController', function($scope){
    $scope.data = {};
    $scope.data.html = "Code: <?php echo strtotime($user->created_at)*1000; ?>";
});