gpt4 book ai didi

angularjs - 将信息传递给 ng-repeat ng-include 范围

转载 作者:行者123 更新时间:2023-12-04 04:45:59 24 4
gpt4 key购买 nike

  • 我正在为我的 AngularJS 应用程序的一个特定问题而烦恼。

  • 基本上,我有一个 Controller “PageCtrl”,它通过服务获取数据列表。数据保存在 PageCtrl 中。一切正常 - 到目前为止一切顺利。

    现在我的问题是:对于 PageCtrl 中数据的每个对象,我使用 ng-repeat 来显示刚刚获取的每个数据。

    在每个 ng-repeat 中,我使用 ng-include 来获取正确的模板,具体取决于每个对象中的数据(基本上,数据是要显示在页面上的元素列表。每个元素都有自己的 Controller 。

    当 ng-include 创建一个 newscope 时,所有创建的子作用域/ Controller 都可以访问数据,因为它位于 $parent Controller - PageCtrl 中。

    一切正常,除了 ng-repeat/ng-include 中每个创建的 Controller 需要知道父级数据列表中的哪个对象,它需要使用来显示。

    基本上,在我的 ng-repeat 中,我想使用 $index 并将其传递给 ng-include 中包含的 Controller 。但是我做不到!如果我使用 ng-init,ng-init 中的代码将在父作用域上执行,即。我原来的 PageCtrl。

    在不使用指令的情况下,我如何将信息传递给 Controller ​​,以便它知道应该使用其父级中的哪些数据对象?

    这是在 MainCtrl 中循环数据的代码:
     <div ng-repeat="element in elements" >
    <ng-include src=" GetTemplateFromElement(element.type) " ng-init=" SetElementNo($index); "></ng-include>
    </div>

    在代码片段中,我在 MainCtrl 上调用 GetTemplateFromElement,它返回要包含的 View 。在包含的 View 中,我指的是哪个 Controller 应该完成这项工作。我尝试使用 $index 告诉包含的 Controller 它应该使用数据中的哪个索引。但是当然代码是在 MainCtrl 范围内执行的。 View 示例:
    <div ng-controller="ElementDocumentCtrl">
    <div ng-bind-html-unsafe="element.document_content"></div>
    </div>

    在代码片段中,“element.document_content”在 ElementDocumentCtrl 的范围内,它从其父级 PageCtrl 拉取数据。

    我怎么能告诉包含在 PageCtrl(它是父 Controller )的数据列表中的哪个索引的指令它应该选择?

    请不要告诉我我需要将它们全部设为指令:)

    谢谢,伙计们。

    最佳答案

    也许我没有完全理解你的问题,但是从文档来看,$index、$first、$middle 和 $last 都暴露在 ng-repeat 子项的本地范围内。

    我已经输入了 plunker来证明这一点。 ChildCtrl 从父级访问 $index 以获取它正在访问的父级中哪个元素的索引。

    关于angularjs - 将信息传递给 ng-repeat ng-include 范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18174041/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com