V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
chairuosen
V2EX  ›  问与答

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

  •  
  •   chairuosen · 2014-12-03 17:23:00 +08:00 · 12784 次点击
    这是一个创建于 3627 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我知道手动插入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>`
    8 条回复    2014-12-04 00:31:24 +08:00
    ZackYang
        1
    ZackYang  
       2014-12-03 17:45:09 +08:00
    $compile
    sd4399340
        2
    sd4399340  
       2014-12-03 20:12:00 +08:00 via iPhone
    确实不符合angular的实践,建议用directive 封起来
    EPr2hh6LADQWqRVH
        3
    EPr2hh6LADQWqRVH  
       2014-12-03 20:19:40 +08:00
    我记得跟$sce有关
    phyng
        4
    phyng  
       2014-12-03 20:22:55 +08:00 via Android
    $compile($(#id))($scope)
    chairuosen
        5
    chairuosen  
    OP
       2014-12-03 23:14:43 +08:00
    @avastms 跟sce无关,sce只是过滤掉不安全的标签。

    @phyng @ZackYang 感谢,明天试试
    phyng
        6
    phyng  
       2014-12-03 23:26:37 +08:00
    @chairuosen 最近经常用,有个问题我一直没解决,就是填充ng-bind-html之后立刻执行$compile是无效的,我是用$timeout延时100ms再$compile实现= =
    p2p
        7
    p2p  
       2014-12-03 23:48:42 +08:00 via iPhone
    用 directive
    chairuosen
        8
    chairuosen  
    OP
       2014-12-04 00:31:24 +08:00
    @phyng 因为ng-bind是类似setTimeout(checkAllBindingItem,1);这样一种实现
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3047 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 12:55 · PVG 20:55 · LAX 04:55 · JFK 07:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.