AngularJS 服务返回未定义

2024-06-07

我有以下服务:

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.messagevar 这样我就可以在前端显示了。

$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(使用前将#替换为@)

AngularJS 服务返回未定义 的相关文章

随机推荐

  • 如何在 Macbook M1 Silicon 上正确安装 CocoaPods

    我正在尝试在配备 M1 芯片的新 MacBook Pro 上安装 Cocoa Pods 从12月份开始就找到了一些解决方案 由于是二月份 这些解决方案可能有点过时了 我在 CocoaPods 网站上找不到任何说明 有人能帮我解决这件事吗 我
  • Matlab - 如果值包含xxx,则删除元胞数组中的行

    在 Matlab 中 如何删除包含变量字符串的元胞数组中的元胞 假设我的元胞数组是 C svnTrunk RadarLib radarlb utilities scatteredInterpolant m C svnTrunk RadarL
  • java中类级锁是如何实现的?

    我知道锁定概念与同步静态和非静态方法分别锁定类和实例 我无法理解的是 类级锁是如何实现的 我的意思是 类只是一个模板 没有物理意义 那么 当我们说类级锁定是通过同步静态方法来实现时 会发生什么呢 该类的所有对象是否都被锁定或被其他进程锁定
  • 更改从 xib 加载的 UITableViewHeaderFooterView 上的背景颜色表示使用 contentView.backgroundColor

    I m 从 xib 文件创建 UITableViewHeaderFooterView https stackoverflow com a 20073742 35690 几乎一切都工作正常 问题是 现在当我尝试更改背景颜色 或者如果我在 xi
  • 使用回退异步加载 jquery 核心

    通过标头中的性能优化和非阻塞脚本 我一直在尝试异步加载 jquery 本身 我遇到了一个jQuery 加载器 http www yterium net jQl an asynchronous jQuery Loader脚本 那个async加
  • 是否可以在 Objective-C 中创建自定义指令?

    Objective C 有如下指令 界面 执行 end 协议 财产 合成 我认为这些东西就像复杂的宏或代码生成器 是否可以创建用于代码生成目的的自定义指令 一种可能的用途是为 CoreData 生成方法 我想不是 因为我从来没有见过任何东西
  • 无法完成 Git Rebase

    我目前正在一个分支上工作 想用 master 来更新它 所以我尝试做一个变基 我正在处理的当前分支 crtdev 我尝试做变基 git checkout crtdev git rebase master used diff mergetoo
  • ios UICollectionView - 设置自动高度

    我正在使用 UICollection 视图创建 3x4 按钮矩阵 iPhone4很好看 高度也比较小 此外 集合视图不会滚动 因为它在可用空间中显示 3x4 矩阵按钮 现在 当我在 iPhone5 上运行相同的应用程序时 我看到底部按钮矩阵
  • 如何使用 jquery 验证这种格式 (yyyy-mm-dd) 的日期?

    我正在尝试验证以下格式的日期 yyyy mm dd 我找到了这个解决方案 但它的格式不符合我的需要 如 mm dd yyyy 这是该解决方案的链接 http jsfiddle net ravi1989 EywSP 848 http jsfi
  • 网守检疫问题与证书

    我们的应用程序已经过代码签名 我们的 Apple 证书是最新的 我们的应用程序的早期版本运行得很好 然而 当用户下载 DMG 时 在某些 Mac 上该应用程序会被隔离 但对于大多数用户而言 情况并非如此 因此 一些用户可以打开该应用程序 而
  • 在 PhoneGap 中启用数字键盘上的 Enter 键

    我们在 Android 3 22 上运行 PhoneGap 2 6 jquery mobile 和backbone 也在其中 我们希望用户在字段中输入值后可以点击回车键来提交表单 该字段是数字输入
  • Delphi 7,加载PNG到TImage

    只是想加载 PNG 尝试使用适用于其他格式的 OleGraphic 来使用我的 LoadPic 但在 PNG 上失败 目标是将图像复制到隐藏位图 然后将其屏蔽并复制到可见的工作图像画布 如果 CopyRect 不这样做 请随意提出其他建议
  • 为什么 Boost.Asio 不支持基于事件的接口?

    我正在尝试理解 Boost Asio 目的是潜在地使用条件变量与 Boost Asio 结合来实现信号系统 我看过其他 StackOverflow 问题boost asio异步等待条件变量 https stackoverflow com q
  • 如何让 ipdb 在调试时显示更多行上下文?

    默认情况下 在 IPython 中调试期间 ipdb http pypi python org pypi ipdb显示代码中当前位置的上方一行和下方一行 有没有简单的方法可以让显示的区域更大一点 我认为它是可配置的 但一直无法找到它 您可以
  • Typescript 项目引用:处理引用项目的第三方依赖项

    我有一个包含 3 个目录的项目client api and shared The shared目录包含 typescript 类型和定义engine我想与之共享的文件夹client and api 此外 shared目录还需要一些第三方依赖
  • R - 对矩阵的每行/列应用具有不同参数值的函数

    我试图将函数应用于矩阵的每一行或每一列 但我需要为每一行传递不同的参数值 我以为我熟悉 lapply mapply 等 但可能还不够 举个简单的例子 gt a lt matrix 1 100 ncol 10 gt a 1 2 3 4 5 6
  • 安装 python 库时出现“'cc' 失败,退出状态 1”错误

    和许多其他人一样 我在安装 python 库 作为 tar 下载 然后解压 时遇到问题 rodolphe mbp python Levenshtein 0 11 2 Rodolphe sudo python setup py install
  • 在 Rspec 中测试 STDOUT 输出

    我正在尝试为这个声明建立一个规范 使用 看跌期权 很容易 print file doesn t exist Create Empty File y n RSpec 3 0 RSpec 3 0添加了一个新的output matcher htt
  • k8s CronJob 在 pod 列表上循环

    我想在特定命名空间中的 pod 上运行循环 但诀窍是在 cronJob 中执行此操作 是否可以内联 kubectl get pods n foo 这里的技巧是在你获得 Pod 列表后 我需要循环并在 15 秒的超时时间内将每个 Pod 删除
  • AngularJS 服务返回未定义

    我有以下服务 app services emailService http sce function http sce return getMessage function messageId callback http get api e