1

在这方面是新的。

我有 2 个 div;当我使用一个将新值发布到服务器时,发布操作可以正常工作。

如何确保这篇文章更新其他 div 中的范围?(使用 ng-repeat 用新条目更新 div)

HTTP.post 操作似乎正在工作,因为数据在刷新时出现。

我试过 $scope.apply() 但它似乎没有工作。

// this is the controller to get the data from the server
  app.controller('projectsController', 
       function projectsController($scope, projectsFactory){ 
               $scope.projects =    projectsFactory.query();
       }); 

和工厂从服务器获取数据

    app.factory('projectsFactory', 
       function($resource,localStorage, $rootScope, $http){
         return $resource('/api/project:id', {id: '@id'});
        });

这是接收用户输入并返回到服务器的控制器

     app.controller('projectEditController', function($scope, projectEdit){
                $scope.projectEdit =    projectEdit;
     });

以及将数据发布到服务器的服务

         app.service('projectEdit', 
                   function projectEdit(localStorage,$rootScope, $http) {

        var self = this;

        self.add = function(newProject,projects) {
            newProject = angular.copy(newProject);

              var newProject = (JSON.stringify(newProject));

        return $http.post('/api/project', newProject )
                    .then(function(response) {
                     newProject.id = response.data.id;

    });

};

这似乎很好,因为它将数据发布到服务器很好。

我想弄清楚的是如何获得“$scope.projects = projectsFactory.query();” 发布操作完成后更新。

这将更新 HTML 中的显示,这是目标。

希望这对优秀的开发人员来说是一个简单的解决方案,但我很难过!谢谢你的时间。

康纳

4

1 回答 1

0

创建 1 个包装器 div,并使用 ng-controller 将控制器设置为它。将您的 2 个 div 放入包装器 div 中。现在,您的控制器创建的范围在两个 div 中都可用,这是一种简单的方法。当某些东西更新该范围内的数据,并且您在 dom 中有其他东西引用该变量时,dom 将按照您的意愿刷新。如果你真的想为每个子 div 使用不同的控制器,那很好,只是要小心继承的作用域。在这种情况下只有一个控制器确实要容易得多。顺便说一句,我看到你提到了 scope.apply()。小心,apply() 是一个真正的 javascript 函数,而不是你想要的。你应该调用 scope.$apply(),$apply 是 angular 函数,为了避免混淆,你可以调用 scope.$digest。

于 2013-09-08T16:58:09.263 回答