【问题标题】:Dynamically add html content with binding in angularjs在angularjs中动态添加带有绑定的html内容
【发布时间】:2014-12-19 22:36:17
【问题描述】:

我有这样的输入:

<input type="text" ng-model="name">

还有一个放在作用域上的列表:

$scope.list = ["<span>{{name}}</span>","<span>{{name2}}</span>"]

我正在尝试使用 ng-repeat 遍历列表并显示所有列表元素,并在输入和跨度内容之间进行绑定。

<div ng-repeat="item in list" ng-bind-html-unsafe="item">
                    <span>{{$index + 1}}.</span>
                    <span ng-bind-html="to_trusted(item)"></span>
                </div>

地点:

$scope.to_trusted = function(html_code) {
        return $sce.trustAsHtml(html_code);
    }

这样做的正确方法是什么? 谢谢。

【问题讨论】:

  • 实际问题是什么?我猜你看到的是{{name}} 而不是name 的值?
  • 这应该可以正常工作,你能设置一个 plunker
  • 是的,您添加了纯 html 而没有应用指令,这就是括号的原因
  • 为什么不使用templates

标签: jquery html angularjs web-applications data-binding


【解决方案1】:

如果你可以避免使用ng-bind-html,你最好使用ng-include作为模板, 在这里工作plunk
喜欢这里:

html

<div ng-repeat="item in list" >
         ...//other things
        <span ng-include="'t1'"  ></span>
    </div>

模板

<script id="t1" type="text/ng-template">
      <span>{{item.name}}</span>
    </script>

控制器

$scope.list = [
      {name:"name1"},
      {name:"name2"},
      {name:"name3"}
      ];

【讨论】:

  • 和我昨天发的一样
  • 谢谢!但是我可以动态添加模板吗?因为我有很多模板,加载所有模板会很可惜,而我最终只需要一两个?
  • 这个Plunker怎么不工作? plnkr.co/edit/GqODeogbXemimTZ9nurY?p=preview
  • 如果您需要动态模板,您可以使用compile 来实现,这就是您的 plunk 无法正常工作的原因,稍后我将通过示例设置 plunk
猜你喜欢
  • 2015-12-25
  • 2012-08-09
  • 1970-01-01
  • 2013-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-28
  • 1970-01-01
相关资源
最近更新 更多