0

我正在使用 ng-Idle 并在填充 KeepaliveProvider.http(...) 时出现错误。在大多数情况下,我使用的代码直接取自此处给出的示例http://hackedbychinese.github.io/ng-idle/

这是我的控制器:

function timeoutCtrl(modelData, $scope, Idle, $log, $uibModal) {
var vm = this;
vm.config = {};

(function () {
    vm.config = modelData;
    Idle.watch();
}());

function closeModals() {
    if (vm.warning) {
        vm.warning.close();
        vm.warning = null;
    }
}

$scope.$on('IdleStart', function () {
    $log.debug('IdleStart');
    closeModals();

    vm.warning = $uibModal.open({
        templateUrl: 'timeout-warning-dialog.html',
        controller: 'TimeoutWarningController as timeoutWarning'
    });
});

$scope.$on('IdleEnd', function () {
    $log.debug('IdleEnd');
    closeModals();
});

$scope.$on('IdleTimeout', function () {
    $log.debug('IdleTimeout');
    window.location = '/Session/Timeout/' + vm.config.paxCode;
});

}

app.controller('TimeoutController', ['modelData', '$scope', 'Idle', '$log', '$uibModal', timeoutCtrl])
.config(['timeoutData', 'IdleProvider', 'KeepaliveProvider', function (timeoutData, IdleProvider, KeepaliveProvider) {
    IdleProvider.idle(timeoutData.timeoutIdleSeconds);
    IdleProvider.timeout(timeoutData.timeoutWarningSeconds);
    KeepaliveProvider.interval(timeoutData.keepAliveSeconds);
    KeepaliveProvider.http('/api/session/keepalive');
}]);

但是在 IdleStart 打开模态对话框后,任何鼠标移动都会导致此错误: 在此处输入图像描述

$http(...).success 不是函数

如果我注释掉设置 KeepaliveProvider.http(...) 的行,则不会发生错误。但是我的服务器会话也没有保持活动状态。

我已经用谷歌搜索了这个,大多数例子都没有设置 KeepaliveProvider.http(...)。那些做的事情和我做的一样。是否有一些必须完成但示例中没有的配置?

我正在使用 ng-Idle 1.2.2

4

1 回答 1

0

我在这里发现了问题。我通过 Nuget 包获得了 AngularJS 1.6.1。因此,不推荐使用 .success 和 .error 。

但不知何故,我得到了使用 .success 的 ng-Ilde 版本 1.2.2 的旧版本。需要下载最新版本的 ng-Idle。

于 2017-03-30T14:25:58.523 回答