我对 Angular 有点陌生,我正在尝试设置一个非常简单的 RPC 实现,它使用 angulars$http
服务(工厂)来完成这项工作。到目前为止,这是我所拥有的服务:
'use strict';
angular.module('xxx')
.factory('rpcService', function ($http) {
return {
request: function(method, params, callback) {
var service = method.split('.');
params = params || {};
params.method = service[1];
return $http.post('/services/' + service[0] + '.sjs', params).then(function (response) {
return response.data;
});
}
}
});
然后当我想使用该服务时,我将其称为如下:
rpcService.request('Users.facebookLogin', { token: response.authResponse.accessToken })
.then(function(response) {
debugger;
$rootScope.user = response.user;
console.log($rootScope.user);
$rootScope.loggedIn = true;
$rootScope.$apply();
});
代码在调试器之后永远不会到达行;事实上,代码根本不会发出$http
请求。由于某种原因,它停止并且不会继续回调......或承诺......我对技术差异是什么感到有点困惑。:)
话虽如此,我已经测试了 POST 调用$.ajax
并且一切都正常返回,所以我的 Angular 代码有些问题。
实际触发请求并使用的代码$.ajax
:
'use strict';
angular.module('xxx')
.factory('rpcService', function ($http) {
return {
request: function (method, params, callback) {
var service = method.split('.');
params = params || {};
params.method = service[1];
$.ajax('/services/' + service[0] + '.sjs', {
type: 'POST',
dataType: 'json',
data: params,
success: function(data, status, xhr) {
if (callback) {
callback(data);
}
}
});
}
}
});
我只是不确定为什么没有提出 XHR 请求。