我有以下 angularjs 代码:
$scope.clients = commonFactory.getData(clientFactory.getClients());
if ($scope.clients.length > 0) {
$scope.sampleForm.ClientId = $scope.clients[0].ClientId;
}
而commonFactory中的getData函数:
factory.getData = function (method) {
method.then(function (response) {
return response.data;
}, function (error) {
$rootScope.alerts.push({ type: 'error', msg: error.data.ExceptionMessage });
});
};
问题是 $scope.clients.length 由于异步调用而在命中该行时未定义。
有没有办法在我知道 $scope.clients 已分配之前不进行长度检查?我看过这样的东西:
$scope.clients = commonFactory.getData(clientFactory.getClients()).then(function () {
if ($scope.clients.length > 0) {
$scope.sampleForm.ClientId = $scope.clients[0].ClientId;
}
});
试图链接我的then
承诺,但没有骰子......这里的目标是使用 getData 方法来避免一堆样板代码来捕获错误......也许我正在处理这个错误?