angular ui bootstrap: Error: [$injector:unpr] Unknown provider: appMainProvider <- appMain

angular ui bootstrap: Error: [$injector:unpr] Unknown provider: appMainProvider <- appMain

我目前正在尝试打开 AngularUI Bootstrap 模式。不知何故,我不断收到以下错误:

Error: [$injector:unpr] Unknown provider: appMainProvider <- appMain

我在网上搜索并找到了几个 "solution",但其中 none 似乎有效(或者我做错了什么)。我找到的解决方案之一是 .

这是我的 main js controller:

module.exports = function(appMain, name) {

    appMain.controller(name, mainCtrl);

    mainCtrl.$inject = ['$state', 'mainDataService', 'dnnVariables', '$uibModal'];

    function mainCtrl($state, mainDataService, dnnVariables, $uibModal) {

        var vm = this;

        function fullAnswer() {
            var source = require("../ViewAnswer/viewAnswer.html");
            $uibModal.open({
                templateUrl: source,
                controller: require("../ViewAnswer/viewAnswer.controller.js"),
                controllerAs: 'viewAnswerCtrl',
                backdrop: 'static'
            });
        }
    }
}

这将打开模式。模态 html 如下(几乎没有任何用于测试目的)

something

modal js controller如下:

module.exports = function (appMain, name) {

appMain.controller(name, viewAnswerCtrl);

viewAnswerCtrl.$inject = ['$state', 'mainDataService', 'dnnVariables', "$uibModalInstance"];

function viewAnswerCtrl($state, mainDataService, dnnVariables, $uibModalInstance) {

    var vm = this;

    }
}

注意:我正在使用 angular-ui-bootstrap 2.5

在此示例中,mainCtrl 不是控制器函数,而是一些定义控制器的包装函数。它可能被用作:

mainCtrl(appMain, name);

而不是

appMain.controller(name, mainCtrl);

module.exports = function (appMain, name) {...} 中包装控制器没有任何好处。最好省略,用angular.module(...)代替appMain变量。