2016-03-24 48 views
0

このコントローラ内で私の$ apartmentsサービスを呼び出す際に問題があります。角度サービスが呼び出されていません。

$scope.checkout =() => { 
$scope.stripe_err = null; 

if ($scope.subscription.type === '') { 
    $scope.stripe_err = 'No subscription selected'; 
    return; 
} 

Stripe.card.createToken($scope.stripeToken, stripeResponse); 
} 
let stripeReponse = (status, response) => { 
if (status !== 200) { 
    $scope.stripe_err = status; 
    return; 
} else { 
    $stripe.checkout(token, response.id) 
    .then((result) => { 
     $scope.receipt = result.data.receipt/100; // Stripe amount is in cents 
     $scope.totalPrice = ''; 
     $scope.stripeToken = { number: '', cvc: '', exp_month: '', exp_year: '' }; 
    }) 
    .catch(err => console.error(err)); 
} 
    $apartments.postApt(token, $scope.userInfo); // The request finishes when my services is outside the .then() 
}; 

が、私は間違ったもの$apartments.postApt(result, $scope.userInfo); でパラメータを交換するとき、私はこれは私の$アパートサービスがどのように見えるかで、このエラーにPUT http://localhost:7000/landlord-api/units/[object%20Object]?access_token=[object%20Object] 500 (Internal Server Error)

を取得します。もし私が$stripe.checkout()の外に呼び出すと、それは呼び出されるので私はその私のサービスがわからない。

exports.$apartments = function ($http, $q) { 
    function postApt (landlord_id, newApt) { 
    var deferred = $q.defer(); 
    $http.put('/landlord-api/units/' + landlord_id + '?access_token=' + landlord_id, newApt) 
     .then(function (result) { 
     return deferred.resolve(result); 
     }) 
     .catch(err => deferred.reject(err)); 
    return deferred.promise; 

    return { 
    postApt: postApt 
    } 
} 

更新:まだ解決していません。私が気づいたのは、私のアパートサービスを.then()に入れれば、依頼は保留中ですが、私が.then()の外に置くと、リクエストが完了し、適切な回答が得られます。

+0

なぜあなたはサービスを '$'で指定していますか?一般的に '$'はフレームワークオブジェクト用に予約されています。 – dwjohnston

+0

あなたはそうです。たぶん、私は混乱を避けるためにそれを変更する必要があります。 – ken

答えて

1

は、オブジェクトを送信している、応答を見て、あなたのlandlord_idを確認します。

access_token=[object%20Object] 

あなたが構造を得るようlandlord_idのはconsole.logを行います。 共通の可能性は配列であることです。

+0

はい。意図的に結果オブジェクトを渡すと配列が得られますが、トークンを渡すと実際のトークンが得られます。私はしばらく待って、この 'net :: ERR_EMPTY_RESPONSE'を取得しました。私が約束のチェーンの外にサービスを置くと、問題なく呼び出されます。 – ken

0

このようにしてください。

exports.$apartments = function ($http, $q) { 
function postApt (landlord_id, newApt) { 
    var deferred = $q.defer(); 
    angular.element(document.getElementById("YOUR_FORM_ID")).scope().getlandlord.then 
    (function (result)){ 
     return deferred.resolve(result); 
    }).catch(err => deferred.reject(err)); 
    return deferred.promise; 
return { 
postApt: postApt 
} 
} 

scope.getlandlord(landlord_id,newApt){ 
    return $http.post('/landlord-api/units/' + landlord_id + '?access_token=' + landlord_id, newApt).then(function(response) { 
     return response; 
    }); 
}; 
0

はまあ問題は、おそらくここに存在している:あなたは$のresult.data.successロジックが第二(今だけ)で働いて取得する場合

$stripe.checkout(token, response.id) 
    .then((result) => { 
    // your stuff 
    }) 
    .then((result) => { 
    // your stuff 
    }) 
    .catch((err) => { }); 

は最初.then()を削除し、参照してください。 then()

関連する問題