Angularjs:ng-bind-html& NG-重复

时间:2014-03-17 01:00:55

标签: angularjs angularjs-scope angularjs-ng-repeat

我有一个视图,我在从数据库中检索此模板后我正在更新:

<div class="row" ng-repeat="post in posts">
        <div class="col-lg-9 col-lg-offset-2">        
          <!-- blog entry -->
          <br ng-hide="$last">
          <h1><a href="{{'#/post/' + post.title}}">{{post.title}} </a></h1>
          <p><span class="glyphicon glyphicon-time"></span> Posted on {{ post.time_Date | date:'MM/dd/yyyy @ h:mma'}} </p>
          <div class="image_Center">
            <!-- <img ng-src="{{post.imageUrl}}" width="550" height="450"> -->
            <img ng-src="{{post.imageUrl}}" width="450" height="350">
          </div>
          <br>
          <br>
          <div ng-bind-html="TrustDangerousSnippet()">
            <p>{{post.post}}</p>
          </div>
............not properly closed(huge template)

我正在尝试使用我存储的markdown文本更新{{post.post}},并使用我的控制器正确显示它。代码如下:

$scope.posts = input_data;
$scope.TrustDangerousSnippet = function() {
  return $sce.trustAsHtml(input_data.post);
};      

input_data是我服务器上的JSON对象(博客文章)的集合。问题是没有显示整个对象,但如果要显示其中一个对象,它将呈现给页面。可能是什么问题?

$scope.posts = input_data;
$scope.TrustDangerousSnippet = function() {
  return $sce.trustAsHtml(input_data[1].post);
};      

这是否与正确使用ng-repeat有关?

1 个答案:

答案 0 :(得分:7)

您试图在TrustDangerousSnippet函数中解析input_data.post,但这不存在。

相反,将对象传递给方法如下:

<div ng-bind-html="TrustDangerousSnippet(post.post)">
</div>

将方法更改为:

$scope.TrustDangerousSnippet = function(snippet) {
  return $sce.trustAsHtml(snippet);
};  

小提琴示例:http://jsfiddle.net/ZxPHW/

修改:此外,您不需要在html中添加{{post.post}}。