私の問題は、http 要求の最終的なコールバックでアクセスする必要があるデータをどこに保存するかわからないことです。jQueryでは、次のことを行うだけです
var token = $.get('/some-url', {}, someCallback);
token.oSomeObject = {data: 'some data'};
function someCallback( data, status, token ){
token.oSomeObject.data // 'some data'
}
トークンを使用して、リクエスト固有のデータを保存します。
Angular でこれを実現する唯一の方法は、実際の構成にデータを保存することです。
var config = {
url: '/some-url',
method: 'GET',
oSomeObject: { data: 'some data' }
};
$http(config).success(someCallback);
function someCallback( data, status, headers, config ){
config.oSomeObject.data // 'some data'
}
1 つには、これにより省略形の呼び出し ($http.get、$http.post) を使用できなくなります。また、特定のサービス モジュールで呼び出しをラップするときに、はるかに目立たない方法であることがわかります。
これを行う他の方法はありますか?
明確にするために更新
promise API を適切に使用する方法を理解していないという簡単なことを見逃しているだけかもしれませんが、同じページにいることを確認するために、この問題についてもう少し詳しく説明します。
2 つのファイルがあります: 1) Controller.js 2) AjaxServices.js (すべての ajax 呼び出しは、サービスのメソッドとしてここで定義されます)。
AjaxServices.js は次のようになります。
app.service('AjaxService', function( $http ){
var self = this;
this.createUser = function( oUser, fSuccessCallback ){
return $http.put('/api/user', {oUser: oUser})
.success(fSuccessCallback);
}
}
Controller.js は次のようになります。
app.controller('MyController', function( $scope, AjaxServices ){
$scope.saveUser = function( oUser ){
var oPromise = AjaxServices.createUser( oUser, $scope.onUserSaved );
oPromise.oUser = oUser // this is how I solve it in jQuery.ajax. The oPromise
// is then sent as the token object in the onUserSaved
// callback
}
$scope.onUserSaved = function( oStatus, status, headers, config ){
oStatus.id // here is the id of the newly created user
// which I want to now hook on to the oUser local object
}
}
promise API を使用して同じことをどのように達成しますか?