【问题标题】:In AngularJS = "Cannot read property 'then' of undefined"在AngularJS =“无法读取未定义的属性'then'”
【发布时间】:2016-06-18 22:32:15
【问题描述】:

救命!

我对 AngualarJS 比较陌生——请善待! 我在服务中有一个功能...

function getVersion() {
    return $http.get('package.json').then(function success(response) {
            if (!utilsService.isNullOrUndefined(response.data.version)) {
                return response.data.version;  // this returns what is expected
            } else {
                return 'x.x.x';
            }
        }, function error(response) {
            return 'x.x.x';
        }
    );
}

在我的控制器中,我正在尝试调用服务......我不断收到“无法读取未定义的属性 'then'” 当我逐步完成服务时,这是我所期望的。

控制器功能...

 var vm = this;
 vm.version =  '-.-.-';
 activate();
 function activate() {
     logger.info('Activated Login View');
     loginService.getVersion().then(function(data) {
         vm.version = data.version;
     });        
 }  Cannot read property 'then' of undefined"

我该如何正确地做到这一点?

【问题讨论】:

  • 您的utilsService.isNullOrUndefined(response.data.version) 只是response.data.version == null
  • 谢谢 -- 我创建了一个函数来检查 null 或 undefined

标签: angularjs service controller promise


【解决方案1】:

您的getVersion() 函数不返回任何内容,因此返回值为undefined。你应该正确地回报你的承诺:

return $http.get('package.json').then(function success(response) {

【讨论】:

  • 谢谢...但我还是不明白。我如何“正确地回报”承诺?
  • 是的,你做到了——抱歉,我错过了“返回”……其余代码与我的相同。再次感谢您。
  • 我仍然缺少一些东西。在 getVersion() 中,我使用 codereturn $http.get('package.json').then(function success(response) { code 它正在返回我所期望的。但在控制器中的数据。版本未定义'
猜你喜欢
  • 2016-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-25
  • 1970-01-01
  • 2015-03-28
  • 2018-02-04
  • 1970-01-01
相关资源
最近更新 更多