所以我试图在角度服务中进行调用:
'use strict';
angular.module('ebs-front').service('NotificationHelper', function(TransactionService, $q) {
this.IsNewTransaction = function(employeeId) {
debugger;
TransactionService.pendingForEmployee({ employeeId: 2 }).$promise.then(function(result) {
TransactionService.isNewTransaction({ id: result.id }).$promise.then(function(result) {
debugger;
return result;
});
});
};
});
在pendingForEmployee
中我需要检索一些数据,并使用该调用的结果调用isNewTransaction
。我想在我的控制器中返回这些数据:
NotificationHelper.IsNewTransaction({employeeId: $stateParams.id}).$promise.then(function(res) {
debugger;
NotificationManager.Register('success', res.isNewTransaction);
$state.go('root.sidebar.employee-dashboard', { id: $stateParams.id }, {reload: true});
});
我的问题是我一直收到错误,我不知道如何解决这个问题:
Cannot read property '$promise' of undefined.
我的控制器的这一行出现异常:
NotificationHelper.IsNewTransaction({employeeId: $stateParams.id}).$promise.then(function(res)
任何帮助都将不胜感激。
答案 0 :(得分:0)
我的问题是我一直收到错误,我不知道如何解决这个问题:
当然,因为NotificationHelper.IsNewTransaction
没有返回任何内容,所以实际上它会隐含地返回undefined
。
如果要使用Promise API,请确保您的函数返回一个promise。也许在您的情况下return TransactionService.pendingForEmployee(...)
:
angular.module('ebs-front').service('NotificationHelper', function(TransactionService, $q) {
this.IsNewTransaction = function(employeeId) {
return TransactionService.pendingForEmployee({ employeeId: 2 }).$promise.then(function(result) {
return TransactionService.isNewTransaction({ id: result.id }).$promise.then(function(result) {
return result;
});
});
};
});
或者您可以将其缩短为:
angular.module('ebs-front').service('NotificationHelper', function(TransactionService, $q) {
this.IsNewTransaction = function(employeeId) {
return TransactionService.pendingForEmployee({ employeeId: 2 }).$promise.then(function(result) {
return TransactionService.isNewTransaction({ id: result.id }).$promise;
});
};
});