我有以下服务:
app.services.emailService = ['$http', '$sce', function ($http, $sce) {
return {
getMessage: function(messageId, callback) {
$http.get('/api/email/inbox' + '/' + messageId).then(function(response) {
response.data.message.updated_at = new Date(response.data.message.updated_at.replace(/-/g,"/"));
response.data.message.body = $sce.trustAsHtml(response.data.message.body);
return response.data;
});
}
};
}];
在我的控制器中,我将返回值分配给$scope.message
var 这样我就可以在前端显示了。
$scope.message
未定义
$scope.getMessage = function(messageId) {
$scope.message = emailService.getMessage($scope.messages[messageId].id);
console.log($scope.message);
}
您的函数 getMessage 没有 return 语句。但$http https://docs.angularjs.org/api/ng/service/%24http是异步的,所以它会返回一个promises https://docs.angularjs.org/api/ng/service/%24q.
app.services.emailService = ['$http', '$sce', function ($http, $sce) {
return {
getMessage: function(messageId, callback) {
var deferred = $q.defer();
$http
.get('/api/email/inbox' + '/' + messageId)
.then(function () {
response.data.message.updated_at = new Date(response.data.message.updated_at.replace(/-/g,"/"));
response.data.message.body = $sce.trustAsHtml(response.data.message.body);
deferred.resolve(response.data);
})
.catch(function (e) {
deferred.reject(e);
);
return deferred.promise;
}
};
}];
在你的控制器中
$scope.getMessage = function(messageId) {
emailService
.getMessage($scope.messages[messageId].id)
.then(function (message) {
$scope.message = message;
console.log(message);
});
}
如果你想清理 emailService 中的回复,你需要自己声明一个承诺。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)