将数据推送到ng repeat时AngularJS模式不工作

将数据推送到ng repeat时AngularJS模式不工作,angularjs,twitter-bootstrap,Angularjs,Twitter Bootstrap,我尝试使用引导模式来更新列表中的一些数据,我尝试的第一个模式是向列表中添加一个新项 我已经成功地创建了模式,启动了ajax调用,并通过下面的承诺将数据返回给主控制器 我的问题是,我无法将新项目附加到列表项目中。我觉得我下面的代码是完美的,应该可以完成这项工作,但它没有在ng repeat中添加项目 $scope.projects.push.apply($scope.projects,modalProject) //doesn't add the item to $scope.project

我尝试使用引导模式来更新列表中的一些数据,我尝试的第一个模式是向列表中添加一个新项

我已经成功地创建了模式,启动了ajax调用,并通过下面的承诺将数据返回给主控制器

我的问题是,我无法将新项目附加到列表项目中。我觉得我下面的代码是完美的,应该可以完成这项工作,但它没有在ng repeat中添加项目

$scope.projects.push.apply($scope.projects,modalProject)    //doesn't add the item to $scope.projects
modalInstance.result.then(
    function (modalProject) {
        $log.info(modalProject);
        $scope.newProject = modalProject                            //works and updates the UI
        //$scope.projects.push(modalProject)                        //adds the new item to $scope.projects but doesn't get shown in the ng-repeat
        //$scope.projects.push(angular.copy(modalProject))          //doesn't add the item to $scope.projects
        //$scope.projects.push.apply($scope.projects,modalProject)    //doesn't add the item to $scope.projects
        //$scope.$apply()                                           //causes the inprogress error
        $log.info($scope.projects)
     }, function () {
        $log.info('Modal dismissed');
 }
尽管如此,$scope.newProject=modalProject仍然可以完美地工作

感觉如此接近完美工作,出了什么问题


午餐后,你是否尝试过将$scope.newProject=modalProject放入$evalAsync中,如下所示:


这将触发一个摘要周期,也许你的数据会以这种方式出现。

我终于弄清了这个问题的真相,我将把这篇文章作为答案发布,希望避免这篇文章给其他人带来任何困惑

答:上述代码确实按预期工作

在上面的场景中,我在ng repeat上放置了一个过滤器,我忘记了这个过滤器,该模式使用服务器端数据来设置过滤器正在使用的值,但它不能正常工作。长话短说,我把事情搞砸了,不是很明显


总的来说,我很高兴,因为这迫使我使用工厂来保存数据,而不是依赖于传递数据,我认为这简化了我的代码。

Does$log.infomodalProject;记录正确的模式?Andrei Cacio-是的,目前只有一个模式,而modalProject记录的数据正是我希望看到的数据。另外,当我使用$scope.projects.pushmodalProject时,$log.info$scope.projects将包括modalProject-但是ng repeat不会显示它。请尝试下面显示的示例,如果有任何更改,请告诉我。嗨,Andrei,感谢您的帮助。我发现问题是ng repeat上的筛选器没有被服务器正确设置。我将给出一个答案来澄清解决方案。
$scope.$evalAsync(function() {
   $scope.newProject = modalProject;
});