Angularjs ng重复产生意外和奇怪的结果

Angularjs ng重复产生意外和奇怪的结果,angularjs,angularjs-ng-repeat,directive,Angularjs,Angularjs Ng Repeat,Directive,我花了5-6个小时试图弄明白这一点,但我不知道为什么在ng重复中简单地显示一个对象会被重复10次。而且这些值也没有被输出 $scope looks like this ↪ projects (this loads up on demand) ↪ activeProjects (this is one object) and this used in the view ↪ setActiveProject(id,scope) passed along to the

我花了5-6个小时试图弄明白这一点,但我不知道为什么在ng重复中简单地显示一个
对象
会被重复10次。而且这些值也没有被输出

    $scope looks like this
    ↪ projects (this loads up on demand)
    ↪ activeProjects (this is one object) and this used in the view 
    ↪ setActiveProject(id,scope) passed along to the <projectpick> directive
HTML:


  • 阿米代尔医院重建
  • 肯普西区医院
  • 北区泳滩健康服务重建计划(社区健康服务)
  • Shellharbor门诊护理
  • 威尔士亲王-重组和扩展
  • 光明联盟
{{$index+1}} {{project.name}

{{project.area}}}area

项目状态-{Project.Status}

{{project.body} 了解更多信息。

  • {{project.start_date | asDate | date:'MMMM yyyy'}} -{{project.end_date|asDate|date:'MMMM yyyy'}}
  • {{项目成本}}百万

使用$scope.$watchcollection而不是$scope.$watch

$scope.$watchcollection('activeProjects', function(newProject, oldProject) {
    $scope.ajaxPojectsIsLoading = false;
    // user has changed focus on the current project so update
    if (newProject !== oldProject) {
        $scope.setActiveProject(newProject, $scope);
        console.log('setting project to active' , newProject , $scope);
    }
});

使用$scope.$watchcollection而不是$scope.$watch

$scope.$watchcollection('activeProjects', function(newProject, oldProject) {
    $scope.ajaxPojectsIsLoading = false;
    // user has changed focus on the current project so update
    if (newProject !== oldProject) {
        $scope.setActiveProject(newProject, $scope);
        console.log('setting project to active' , newProject , $scope);
    }
});

请添加您正在使用的相关代码there@Simon添加有问题的相关代码。我最好的猜测是,在没有看到任何代码的情况下,当您单击右侧的项目时,您正在执行
$scope.someList.push(project)
。但话说回来,如果不看任何代码就不可能知道第二天早上你看到了什么,这很有趣。此代码存在问题:
activeProject
应该是
数组(目前不是)。这解决了ng重复问题。请添加您正在使用的相关代码there@Simon添加有问题的相关代码。我最好的猜测是,在没有看到任何代码的情况下,当您单击右侧的项目时,您正在执行
$scope.someList.push(project)
。但话说回来,如果不看任何代码就不可能知道第二天早上你看到了什么,这很有趣。此代码存在问题:
activeProject
应该是
数组(目前不是)。这就解决了ng重复问题。
$scope.$watchcollection('activeProjects', function(newProject, oldProject) {
    $scope.ajaxPojectsIsLoading = false;
    // user has changed focus on the current project so update
    if (newProject !== oldProject) {
        $scope.setActiveProject(newProject, $scope);
        console.log('setting project to active' , newProject , $scope);
    }
});