将数据推入ng-repeat时,AngularJS Modal无法正常工作

时间:2015-04-03 12:40:11

标签: angularjs twitter-bootstrap

我正在尝试使用引导模式来更新列表中的某些数据,我尝试的第一个模式是将新项目添加到列表中。

我已成功创建模态,触发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完美无缺。

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

午饭后会把一个笨蛋放好

2 个答案:

答案 0 :(得分:0)

您是否尝试将$scope.newProject = modalProject放入$evalAsync,如此:

$scope.$evalAsync(function() {
   $scope.newProject = modalProject;
});

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

答案 1 :(得分:0)

我终于找到了这个问题的底部,我将发布这个作为答案,希望避免这篇文章对任何人造成任何混淆。

回答:上面的代码确实按预期工作。

在上面的场景中,我在ng-repeat上放了一个过滤器,我忘了这个过滤器,模态是使用服务器端数据来设置过滤器正在处理的值,但是它没有正常工作。长话短说,我以一种不太明显的方式搞砸了。

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