次の 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メソッドを使用して、エラーをキャッチするためのボイラープレートコードの束を回避することです...多分私はこれについて間違っているのでしょうか?