Angular 中手工动态插入的 html,如何能让 angular 解析 ng 标签以及$scope 变量等动态内容

2014-12-03 17:23:00 +08:00
 chairuosen
我知道手动插入html违反angular模式,被迫如此是因为Html模板中模块的顺序是由数据顺序决定(附1),非简单的ng-repeat可以解决(问题1),所以决定把他放在服务端来拼。
但是拼起的html用ng-bind-html插入页面后,html中的angular标签或者{{content}}都不起作用了。如何能够让其被重新解析一遍(问题2)?
---
求解 问题1 || 问题2

附1:数据是类似`[{type:3},{type:1},{type:3}]`要求输出`<div type=3></div><div type=1></div><div type=2></div>`
12812 次点击
所在节点    问与答
8 条回复
ZackYang
2014-12-03 17:45:09 +08:00
$compile
sd4399340
2014-12-03 20:12:00 +08:00
确实不符合angular的实践,建议用directive 封起来
EPr2hh6LADQWqRVH
2014-12-03 20:19:40 +08:00
我记得跟$sce有关
phyng
2014-12-03 20:22:55 +08:00
$compile($(#id))($scope)
chairuosen
2014-12-03 23:14:43 +08:00
@avastms 跟sce无关,sce只是过滤掉不安全的标签。

@phyng @ZackYang 感谢,明天试试
phyng
2014-12-03 23:26:37 +08:00
@chairuosen 最近经常用,有个问题我一直没解决,就是填充ng-bind-html之后立刻执行$compile是无效的,我是用$timeout延时100ms再$compile实现= =
p2p
2014-12-03 23:48:42 +08:00
用 directive
chairuosen
2014-12-04 00:31:24 +08:00
@phyng 因为ng-bind是类似setTimeout(checkAllBindingItem,1);这样一种实现

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/151260

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX