Javascript 如何从深度嵌套的ng重复中的范围访问某些内容

Javascript 如何从深度嵌套的ng重复中的范围访问某些内容,javascript,angularjs,angularjs-ng-repeat,Javascript,Angularjs,Angularjs Ng Repeat,我有一个ng repeat,它实际上可以根据用户的行为在它里面嵌套无限数量的ng repeat。基本上,他们可以创建更多的项目,然后允许您在该项目内创建更多的项目,如果他们愿意的话 现在的问题是,在每个项目中,我需要能够访问$scope.pageId,这样我就可以根据pageId只显示某些内容 目前$parent.pageId将起作用,但仅适用于第一项。当然,下一个嵌套项的父项将是第一个项,而不是scope.page 是否有一种方法可以通过scope.pageId进入项目的每个嵌套ng repe

我有一个ng repeat,它实际上可以根据用户的行为在它里面嵌套无限数量的ng repeat。基本上,他们可以创建更多的项目,然后允许您在该项目内创建更多的项目,如果他们愿意的话

现在的问题是,在每个项目中,我需要能够访问$scope.pageId,这样我就可以根据pageId只显示某些内容

目前$parent.pageId将起作用,但仅适用于第一项。当然,下一个嵌套项的父项将是第一个项,而不是scope.page


是否有一种方法可以通过scope.pageId进入项目的每个嵌套ng repeat,因为它们以$parent的形式远离作用域?

您可以访问控制器中任何位置的作用域变量,包括嵌套ng repeat:

var myApp=angular.module'myApp',[]; myApp.controller'MyCtrl',['$scope',函数$scope{ $scope.name='Mistalis'; $scope.complexArray=[ [ [ [{ “值”:123456 }] ] ] ]; }]; {{l.value}} 我的名字是{{name}}!
通常的做法是定义一个服务来保存您想要访问的数据,并在显示该数据的元素上使用控制器。控制器将查询服务并使数据可供视图访问

angular.module('MyApp')
  .factory('SectionNamePageIdService', [
    function() {
      return {
        setPageId: function() { ... },
        getPageId: function() { ... )
      };
    }
  ]);

angular.module('myApp')
  .directive('NestedItems', ['SectionNamePageIdService',
    function('SectionNamePageIdService') {
      return {
        restrict: 'E',
        scope: true, 
        template: '<div ng-repeat="item in nestedItems"></div>',
        controller: ['$scope', function($scope) {
          $scope.pageId = SectionNamePageIdService.getPageId();
        }]
      };
    }
  ]);
该示例假定父范围中有一个nestedItems对象。您可能还需要定义一个单独的NestedItem指令来处理每个项目的显示方式。我不知道您打算如何将数据向下传递到嵌套项,因此这只是一个基本示例。您可能还需要为数据定义服务


然而,看看你的评论,我真的怀疑这样的嵌套是好的设计。从用户体验的角度来看,深度嵌套20级!对我来说似乎很笨拙。因此,在试图找到技术解决方案之前,最好先在概念层面上对问题进行修改。

你能给我们看一下代码吗?@PhilippSander Mistails答案代码就是一个很好的例子,尽管我需要能够从任何重复中获取“值”。它需要是动态的,因为我不确定用户将创建多少次重复,但这有一个问题。我想从任何重复访问“值”。这样做的方式是,您知道要从哪个repeat访问它,然后将它嵌套在scope.complaxArray中的正确位置。我需要能够访问它从任何重复和可能有任何地方从1重复到20重复。