【问题标题】:AngularJS isolated directive with ng-repeat breaks transclusion scope具有 ng-repeat 的 AngularJS 隔离指令打破了嵌入范围
【发布时间】:2013-05-24 08:22:17
【问题描述】:

我非常感谢我在开发一个嵌入的隔离指令时遇到的这个范围界定问题的一些理解,其中嵌入在模板内重复。

我保证我已经了解隔离作用域和包含作用域的工作原理,并且我已经在网上搜索了答案。 :)

我在这里发现的是,当不使用重复时,我的嵌入 html 可以访问父范围(正如我所料,因为嵌入范围是父范围的兄弟)。

但是,当我更改模板以重复嵌入时,被嵌入的 html 不再可以访问父范围。

我确信这样做是有充分理由的,但对于我的一生,我不能指望它。

请查看example plunker here - 它比文字更能解释我所指的内容。

【问题讨论】:

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


    【解决方案1】:

    使用 ng-repeat 发生的情况是,被嵌入的范围(下面的 00A)成为 ng-repeat 范围 (009) 的子级,而不是控制器范围 (003) 的子级。

    (右键单击图像并在新选项卡中打开它以更好地查看它。)

    由于从隔离作用域 006 到控制器作用域 003 之间没有虚线,因此使用原型继承链接/查找,被嵌入的作用域 00A 无法找到 outer

    (作用域 004 和 005 由 working 指令创建。转置作用域 005 可以使用原型继承找到 outer。)

    【讨论】:

    • 非常感谢,经过您的解释,很有道理。
    猜你喜欢
    • 2015-03-17
    • 2013-03-15
    • 2014-10-23
    • 1970-01-01
    • 2019-10-21
    • 1970-01-01
    • 1970-01-01
    • 2014-12-26
    • 2013-09-04
    相关资源
    最近更新 更多