【问题标题】:Nested ng repeat not working嵌套的 ng 重复不起作用
【发布时间】:2014-07-24 00:20:57
【问题描述】:

好的,我有两个 ng-repeat 在这里工作,第一个(板中板)运行良好,没问题,但是第二个(任务中的任务),当我尝试获取“{{task.title} }" 我什么也没得到,但我可以从中显示所有样式...

编辑 - 这很奇怪,因为“data-ng-if="task.boardIndex === board.id"” 工作正常!但在其中,当我尝试“{{task.title}} " 它什么也得不到...

这是我的模型:

 $scope.tasks = [{boardIndex: 0, title: "test"}, {boardIndex: 1, title: "test2"}]; 

这是我的代码(它是玉石,好吗?)

section(data-ng-repeat="board in boards", ng-cloak)
        .board_header
            div(data-ng-controller="AddTaskBtnController")
                i.add_task_btn.fa.fa-plus-square-o.fa-2x(ng-click='setSelected(board.id)', ng-class="{icon_add_hover: isSelected(board.id)}")
            h2(data-ng-bind="board.title")
        .content_board
            .task(data-ng-repeat="task in tasks", data-ng-if="task.boardIndex === board.id", data-ng-controller='TaskController', data-ng-hide='modeTask', data-ng-init='setTaskId()')
                .user_icon_task
                    i.fa.fa-user.fa-3x.icon-user-not-selected
                .quest_task
                    .puzzle_task(data-ng-hide='modeTask')
                        i.fa.fa-check-circle-o.fa-lg
                    h2 {{task.title}}
                ul.icons_details_task_wrapper
                    li
                        i.fa.fa-check-circle-o
                        span.icon_counter
                    li.pull_left
                        i.fa.fa-puzzle-piece
                        span.icon_counter
                ul.task_details_wrapper
                    li.task_priority(data-ng-show='goal.selectedDrawAttention', data-ng-click='toggleSelected()', data-ng-class='{draw_attention_selected: goal.selectedDrawAttention }', style='cursor: inherit;')
                        i.fa.fa-eye
                    li.task_priority
                        i.fa
                .task_time_ago
                    span(am-time-ago='message.time')

【问题讨论】:

标签: angularjs


【解决方案1】:

第一个 ng-repeat 创建了一个独立的范围,因此如果您的任务是父控制器范围的一部分,您需要在任务前面附加 $parent

 ng-repeat="task in $parent.tasks"

您的嵌套采用类似的模型

$scope.boards=[{name:"board1",tasks:[/*array of tasks*/]}]

如果你有

$scope.boards=[{name:"board1",//] $scope.tasks = [{boardIndex: 0, title: "test"}, {boardIndex: 1, title: "test2"}];

您需要父级访问父级作用域

【讨论】:

  • 我明白你说的,但没用... :(
  • 你能粘贴生成的 html 我不是很熟悉那种模板语言
  • “第一个 ng-repeat 创建一个孤立的范围”,这是不正确的。重复创建子范围,您可以在不使用 $parent 的情况下访问父范围。只有在两个作用域上声明了相同的属性时,您才需要 $parent。
  • 你知道为什么我在尝试获取 {{task.title}} 时什么都没有得到,但是我在这里得到了我的 task.boardIndex:“data-ng-if='task. boardIndex == board.id'"?
  • 每个重复选项根据定义创建一个新范围是隔离的,因此您需要使用 parent 来访问父范围元素,我邀请您创建一个文件来证明我错了,所以我可以学习
【解决方案2】:

这里的问题是因为在我的 TaskController(在我的 BoardsController 中)我设置了这个:

$scope.task                         = {};

所以,每次我在 ng-repeat 中调用 .task(controller=TaskController) 时,它都会删除任务中的所有内容...

对不起,谢谢大家!

【讨论】:

    猜你喜欢
    • 2014-02-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    相关资源
    最近更新 更多