在AngularJS中访问控制器中服务返回的数据
我在一个有AngularJS前端和ASP.NET Web API后端的项目中工作 我有一个调用web API并返回一组JSON数据的服务。我正在尝试访问控制器中的数据,但我收到一个错误,说我要查找的属性未定义!我要找的是注册的保管员姓名在AngularJS中访问控制器中服务返回的数据,angularjs,Angularjs,我在一个有AngularJS前端和ASP.NET Web API后端的项目中工作 我有一个调用web API并返回一组JSON数据的服务。我正在尝试访问控制器中的数据,但我收到一个错误,说我要查找的属性未定义!我要找的是注册的保管员姓名 $scope.getCrateDetails = function (result, isInsert) { $scope.showCrateDetails = true; getCrateDetails(); if (!$scope.
$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
的代码,因为缺少太多的代码,无法获得完整信息…添加了服务代码。如果您需要任何其他信息,请告诉我。