在控制器外部创建角模态

Create Angular Modal Outside of Controller

本文关键字:模态 创建 外部 控制器      更新时间:2023-09-26

app.js中,特别是在$rootScope.$on('$routeChangeStart')中,我有一个创建模态的函数:

setIdleTimeout.$inject = ['$uibModal']
function setIdleTimeout(timerStart, timerDuration, $scope, $uibModal){
    console.log('timerStart: ', timerStart, 'timerDuration: ', timerDuration)
    setTimeout(function(){
        console.log('setTimeout running')
        var modalInstance = $uibModal.open({
            animation: $scope.animationsEnabled,
            templateUrl: '****',
            controller: '****',
            scope: $scope,
            size: size,
            backdrop  : 'static',
            resolve: {}
        });
        modalInstance.result.then(function (selectedItem) {
            $scope.selected = selectedItem
        }, function () { })
    }, 10000)
}

我得到Uncaught TypeError: Cannot read property 'open' of undefined,即使我注入它并包括Index.html的源代码

<script src="~/lib/angular-bootstrap/ui-bootstrap-tpls.js"></script>

如何在控制器外部创建模态?

可能需要更多关于你的代码结构的细节,特别是你调用$rootScope.$on()…

我认为你这里的问题是$uibModal没有正确注射。而不是在setIdleTimeout函数中使用$inject,而是试图在注入$rootScope的同一级别注入$uibModal