Angular.js多次休息调用范围问题

时间:2013-12-10 19:02:46

标签: javascript angularjs rest

对于Angular.js来说,我是一个大人物,我有一个问题,$ scope没有从两个$ resource rest调用之一获得额外的值。这是我的代码:

controller: function ($scope, $modalInstance, $route) {
            $scope.server = {}

            $scope.submit = function () {
                //AddNewServer is a $resource service
                AddNewServer.post($.param({
                    'name': $scope.server.name,
                    'ip': $scope.server.ip,
                    'port': $scope.server.port
                }));

                //ServerStats is a $resource service
                ServerStats.postServerStats(function success(data) {
                    $scope.server.bytesIn = data.returnValue.bytesIn
                }, function err(err) {
                    console.log("Error: " + err)
                })

                $modalInstance.dismiss('cancel');
                $route.reload()

                //BELLOW LOG RETURNS Object {name: "asd", ip: "asd", port: 2} NO bytesIn
                console.log($scope.server) 
            }

            $scope.cancel = function () {
                $modalInstance.dismiss('cancel');
                $route.reload()
            };
        }

问题是如何将我的其他服务调用中的bytesIn添加到我的服务器对象中?我确定这是一个非常明显的事情,但我还在学习阶段。提前谢谢。

1 个答案:

答案 0 :(得分:1)

您的postServerStats()调用是异步的,因此很可能在console.log($ scope.server)语句之前未调用您的成功函数。

在分配$ scope.server.bytesIn后,将console.log($ scope.server)放入成功函数中。

也许你的意思是在postServerStats()回调中做更多的工作?

或者更好的是,请查看angular promises