javascript - Angular 应用程序出现错误 : TypeError: Cannot read property 'then' of undefined

标签 javascript angularjs

当我从我的 Controller 发布时,我收到了该错误

  function postDashboardsData (dataType, dateFrom, dateTo) {

    $scope[dataType + '_done'] = false;

    Api.post('rotations/' + vm.data[0]._id + '/dashboard', angular.extend({
        type : dataType,
        date_range : {
          from : dateFrom,
          to : dateTo
        }
      }, vm.data));
  }

这里我在同一个 Controller 中调用该函数

  postDashboardsData('overall', $scope.datepickerConf1.overall, $scope.datepickerConf2.overall)
    .then(function(data) {
      console.log('data>>>', data);
      $scope.overallData = data;
    })

上面是返回未定义的

再次出错

TypeError: Cannot read property 'then' of undefined

我该怎么办?

最佳答案

您忘记了 postDashboardsData 中的 return:

function postDashboardsData (dataType, dateFrom, dateTo) {

    $scope[dataType + '_done'] = false;

    var dashboardsDataPromise = Api.post('rotations/' + vm.data[0]._id + '/dashboard', angular.extend({
        type : dataType,
        date_range : {
          from : dateFrom,
          to : dateTo
        }
    }, vm.data));

    return dashboardsDataPromise;
}

说明

Api.post() 函数返回一个 Promise,它是一个带有 then 函数的对象。您的 postDashboardsData 函数应返回此 promise ,因此必须将 return 放置在 Api.post 执行之前。

关于javascript - Angular 应用程序出现错误 : TypeError: Cannot read property 'then' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34840975/

相关文章:

javascript - 幻灯片与图库导航冲突

javascript - 使用 Javascript 防止刷新 'Jump'

javascript - 通过调整 dropzone.js 压缩图像

angularjs - 如何销毁 angular.factory 实例

javascript - 有没有办法防止整个 AngularJS Web 应用程序中的退格导航?

javascript - 将点击功能更改为 Keydown() Keycode =32

javascript - 在 AngularJS Controller 之间共享数据?

javascript - 使用 OrderByChild 使用 Firebase 查询数据

angularjs - 将授权 header 添加到单击的链接

javascript - 为什么这个基本的 react-beautiful-dnd 示例没有动画