我正在尝试使用引导模式来更新列表中的某些数据,我尝试的第一个模式是将新项目添加到列表中。
我已成功创建模态,触发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
完美无缺。
感觉如此接近完美工作,出了什么问题?
午饭后会把一个笨蛋放好
答案 0 :(得分:0)
您是否尝试将$scope.newProject = modalProject
放入$evalAsync
,如此:
$scope.$evalAsync(function() {
$scope.newProject = modalProject;
});
这将触发摘要周期,也许您的数据会以这种方式出现。
答案 1 :(得分:0)
我终于找到了这个问题的底部,我将发布这个作为答案,希望避免这篇文章对任何人造成任何混淆。
回答:上面的代码确实按预期工作。
在上面的场景中,我在ng-repeat上放了一个过滤器,我忘了这个过滤器,模态是使用服务器端数据来设置过滤器正在处理的值,但是它没有正常工作。长话短说,我以一种不太明显的方式搞砸了。
总的来说,我很高兴,因为这迫使我使用工厂来保存我的数据,而不是依赖于我认为简化了我的代码的传递数据。