在AngularJS中删除ngRepeat使用的对象时会发生什么?

融合

编辑:jsFiddle示例在这里。

我有一个ngRepeat生成包含的指令iframes

div(ng-repeat='element in elements')
    ng-switch(on="element.type") 
        a-directive(ng-switch-when="something")
        another-directive(ng-switch-when="somethingElse")

现在,在指令中,通过执行以下操作,我将在某些事件后将内容加载到iframe中:

$iframe[0].contentWindow.d_contents = "html"
$iframe[0].src = 'javascript:window["d_contents"]'

一切正常。

当我从模型中(在控制器中)删除这些元素之一时,如下所示:

elements.remove(object) //using sugarjs, that's not the issue, same behaviour with splice

用户界面会相应更新,即元素消失。

问题

这可以按预期工作:

elements.push(ele1)
elements.push(ele2)

.. init iframes inside ele1 and ele2 with content ..

elements.remove(ele2) 

结果:ele2从用户界面消失,ele1但仍加载了iframe

这不是:

elements.push(ele1)
elements.push(ele2)

.. init iframes inside ele1 and ele2 with content ..

elements.remove(ele1) 

结果:ele1从UI消失,ele2仍然与iframe一起存在,但是iframe内容恢复为空iframe.load()并被解雇。

这是怎么回事 为什么我的iframe会重置?

zs2020

您需要在load()内部添加加载逻辑,以便在DOM更改时重新加载内容。

var linkfn = function (scope, element, attrs) {
    init(function () {
        var $iframe = element.find("iframe")

        var refresh = function () {
            var doc = $iframe[0].contentWindow.document;
            doc.open();
            doc.write(scope.ele.source);
            doc.close();
        }

        $iframe.load(function () {
            console.log(scope.ele.id + ": loaded ");

            //refreshing
            refresh();
        });

        //initial loading
        refresh()
    })
}

您需要在doc.write()这种情况下使用,否则您将获得递归循环错误。

DEMO

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从字典中删除值(对象)时会发生什么?

来自分类Dev

在SVN中删除中继时会发生什么标记

来自分类Dev

在Git中删除分支时会发生什么情况

来自分类Dev

在SVN中删除中继时会发生什么标记

来自分类Dev

在lldb中打印Swift对象(po)时会发生什么?

来自分类Dev

在 C++ 中为对象赋值时会发生什么

来自分类Dev

使用Java中的main方法为类创建对象时会发生什么

来自分类Dev

在python中的str上使用encoding时会发生什么?

来自分类Dev

使用另一个(现有)对象创建新对象时会发生什么?

来自分类Dev

在 JS/NodeJS 中,当对象从数组中移除时会发生什么?

来自分类Dev

Java删除,编辑和更改文件夹中的文件时会发生什么?

来自分类Dev

在iTunes Connect VPP(B2B)中删除Apple ID时会发生什么?

来自分类Dev

当我在C ++中对未初始化的指针调用“删除”时会发生什么?

来自分类Dev

当我在SQL Server中删除列时会发生什么

来自分类Dev

当两个并发线程尝试从CopyOnWriteArrayList中删除元素时会发生什么?爪哇

来自分类Dev

从Terraform配置文件中删除资源时会发生什么

来自分类Dev

使用jQuery的remove方法删除脚本标签时会发生什么?

来自分类Dev

尝试使用Java捕获-发生异常时会发生什么?

来自分类Dev

在sh循环的“ for for in in”中间添加/删除文件时会发生什么?

来自分类Dev

当我在异步回调中设置对象时会发生什么?

来自分类Dev

更改集合中的对象以使其相互匹配时会发生什么?

来自分类Dev

在Swift中包装和展开可选对象时会发生什么?

来自分类Dev

在C ++中为对象分配引用的值时会发生什么?

来自分类Dev

使用类函数更改S4对象的“类”时会发生什么情况?

来自分类Dev

当两个对象彼此相等时会发生什么

来自分类Dev

当javascript引擎解释对象文字时会发生什么?

来自分类Dev

暂停时会发生什么?

来自分类Dev

当我在Bash脚本中对函数使用`&`时会发生什么?

来自分类Dev

使用“ + =”在Java中“更改”字符串时会发生什么情况?

Related 相关文章

  1. 1

    从字典中删除值(对象)时会发生什么?

  2. 2

    在SVN中删除中继时会发生什么标记

  3. 3

    在Git中删除分支时会发生什么情况

  4. 4

    在SVN中删除中继时会发生什么标记

  5. 5

    在lldb中打印Swift对象(po)时会发生什么?

  6. 6

    在 C++ 中为对象赋值时会发生什么

  7. 7

    使用Java中的main方法为类创建对象时会发生什么

  8. 8

    在python中的str上使用encoding时会发生什么?

  9. 9

    使用另一个(现有)对象创建新对象时会发生什么?

  10. 10

    在 JS/NodeJS 中,当对象从数组中移除时会发生什么?

  11. 11

    Java删除,编辑和更改文件夹中的文件时会发生什么?

  12. 12

    在iTunes Connect VPP(B2B)中删除Apple ID时会发生什么?

  13. 13

    当我在C ++中对未初始化的指针调用“删除”时会发生什么?

  14. 14

    当我在SQL Server中删除列时会发生什么

  15. 15

    当两个并发线程尝试从CopyOnWriteArrayList中删除元素时会发生什么?爪哇

  16. 16

    从Terraform配置文件中删除资源时会发生什么

  17. 17

    使用jQuery的remove方法删除脚本标签时会发生什么?

  18. 18

    尝试使用Java捕获-发生异常时会发生什么?

  19. 19

    在sh循环的“ for for in in”中间添加/删除文件时会发生什么?

  20. 20

    当我在异步回调中设置对象时会发生什么?

  21. 21

    更改集合中的对象以使其相互匹配时会发生什么?

  22. 22

    在Swift中包装和展开可选对象时会发生什么?

  23. 23

    在C ++中为对象分配引用的值时会发生什么?

  24. 24

    使用类函数更改S4对象的“类”时会发生什么情况?

  25. 25

    当两个对象彼此相等时会发生什么

  26. 26

    当javascript引擎解释对象文字时会发生什么?

  27. 27

    暂停时会发生什么?

  28. 28

    当我在Bash脚本中对函数使用`&`时会发生什么?

  29. 29

    使用“ + =”在Java中“更改”字符串时会发生什么情况?

热门标签

归档