Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在AngularJS中访问控制器中服务返回的数据_Angularjs - Fatal编程技术网

在AngularJS中访问控制器中服务返回的数据

在AngularJS中访问控制器中服务返回的数据,angularjs,Angularjs,我在一个有AngularJS前端和ASP.NET Web API后端的项目中工作 我有一个调用web API并返回一组JSON数据的服务。我正在尝试访问控制器中的数据,但我收到一个错误,说我要查找的属性未定义!我要找的是注册的保管员姓名 $scope.getCrateDetails = function (result, isInsert) { $scope.showCrateDetails = true; getCrateDetails(); if (!$scope.

我在一个有AngularJS前端和ASP.NET Web API后端的项目中工作

我有一个调用web API并返回一组JSON数据的服务。我正在尝试访问控制器中的数据,但我收到一个错误,说我要查找的属性未定义!我要找的是注册的保管员姓名

$scope.getCrateDetails = function (result, isInsert) {
    $scope.showCrateDetails = true;
    getCrateDetails();

    if (!$scope.premiumCrate.RegisteredKeeperName.toLowerCase().indexOf("Green Farm") > -1) {
        $scope.calloutClass = 'callout-danger';
        $scope.calloutMessage = 'We (Green Farm) cannot provide this service with the necessary documents.';
    } else {
        $scope.calloutMessage = 'All is good!';
    }
};
即使当我打印出
$scope
时,我也可以看到我要查找的属性填充了正确的信息

{{premiumCrate.RegisteredKeeperName}}
我的服务代码如下:

function getCrateDetails() {
    // service call goes here.
    stockData.GetCrateDetails($scope.premiumCrate.Id).then(
        function (cData) {
            $scope.premiumCrate = cData;
        },
        function () {

        });
};

getCreateDetails
是一个异步调用(您试图在数据返回和分配之前使用它),您应该
使用
返回该调用。然后
并在控制器中访问它,如下所示:

function getCrateDetails() {
    return stockData.GetCrateDetails($scope.premiumCrate.Id).then(function (cData) {
        return cData.data;
    }, function () {

    });
};
然后打电话:

getCrateDetails().then(function(data) {
    console.log(data); //hey data!
    $scope.premiumCrate = data;

    if (!$scope.premiumCrate.RegisteredKeeperName.toLowerCase().indexOf("Green Farm") > -1) {
        $scope.calloutClass = 'callout-danger';
        $scope.calloutMessage = 'We (Green Farm) cannot provide this service with the necessary documents.';
    } else {
        $scope.calloutMessage = 'All is good!';
    }
});

您一定是遇到了ajax的异步问题。请显示加载了
RegisteredKeeperName
的代码,因为缺少太多的代码,无法获得完整信息…添加了服务代码。如果您需要任何其他信息,请告诉我。