$ HTTP.post后更新$ scope

时间:2013-09-06 16:50:20

标签: node.js angularjs angularjs-scope angularjs-ng-repeat

这是新的。

我有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;

    });

};

这似乎很好,因为它将数据发布到Sever上。

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

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

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

康纳

1 个答案:

答案 0 :(得分:0)

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