如何访问 post in Angularjs 之后的数据

How to access the data after post in Angularjs

我的浏览器

<button type="submit" ng:click="sendviewer(vl.viewerid)" ></button>

我的控制器

$scope.viewerDetails = [];
var viewerid = [];

$scope.sendviewer = function(viewer){
    var success = function(data)
    {
        for( var i = 0; i < 1; i++ )
        {
            var obj = data[i];
            if(obj.viewerid != undefined) {
                viewerid.push(obj.viewerid);
            }
        }
        $scope.viewerDetails = viewerid;
    }

    viewerService.postViewer(viewer).success(success);
}

我的服务

return {
    postViewer: function(viewer){
        $location.path('/viewerdetails');
        return $http({ 
            method: 'POST', 
            url: 'api.php', 
            data: { 
                'view': viewer 
            },
              headers: {'Content-Type': 'application/x-www-form-urlencoded'} 
        });
    }
}

我返回的数据在函数内存中可用,但我如何才能在函数外部访问该数据以在我的视图中访问?如果我尝试做 {{ viewerDetails.viewerid }} 将显示空白。

由于viewerid是一个局部数组变量,它里面存储的数据在作用域外是不可用的。您应该将 viewerid 存储在 $scope 中。喜欢

$scope.viewerid = [];

现在可以在 DOM 上访问了。

嗯,看起来 for 循环是不必要的,实际上有点奇怪。

$scope.viewerIds = [];

$scope.sendviewer = function(viewer){
    var success = function(data)
    {
        var obj = data[0];
        if(obj.viewerid != undefined) {
           $scope.viewerIds.push(obj.viewerid);
        }
    }

    viewerService.postViewer(viewer).then(success);
}

您也不应该使用 success,因为它已被弃用。请改用 then 的 promise 语法。 这会将调用结果的 ID 添加到 $scope.viewerIds 数组。 目前尚不清楚这是否是您想要的。但对我来说它看起来像。

您确定 data 与您预期的一样吗?一个数组,其中第一个元素是您的对象。老实说,这也有点奇怪 api..

然后在您的 html 中,您也许可以循环数组以显示 ID:

<div ng-repeat="id in viewerIds"> ID: {{id}}</div>