Bootstrap UI - $ modal仍未定义

时间:2015-07-16 18:54:53

标签: angularjs angular-ui-bootstrap angular-bootstrap

我是Angular的新手,在尝试使用Angular Bootstrap UI时我遇到了一个奇怪的问题。

我已经知道它正确注入,因为Typeahead组件工作正常。我刚开始将控制器中调用JQuery模式的旧代码切换到bootstrap中以使它们更易于测试,但由于某些原因,即使我将$ modal注入控制器,它仍然未定义,我无法使用它。

var MYAPP = MYAPP || {};

(function (angular) {
    var common = MYAPP.common,
        controllers = common.controllers,
        directives = common.directives,
        factories = common.factories,
        filters = common.filters,
        services = common.services,
        repositories = common.repositories,
        application = angular.module('MyModule', ['ngAnimate','ui.bootstrap']);



    application.directive('positiveInteger', directives.positiveInteger);

    application.filter('decimalPrecision', filters.decimalPrecisionFilter);

    application.service('httpService', ['$http', repositories.httpService]);

    MYAPP.application = application;

})(window.angular);

然后是模块(加载一个单独的js文件):

var MYAPP = MYAPP || {},
    someModule = MYAPP.namespace('someModule');

(function (application) {


    /****************** Controller definitions **********************/
    application.controller('myController', ['$rootScope', '$scope', '$modal', someModule.myController]);


})(MYAPP.application);

然后是控制器代码:

var MYAPP = MYAPP || {},
    someModule = MYAPP.namespace('someModule');


someModule.myController = function($rootScope, $scope, $modal) {
    var _controller = this;

etc etc

然后使用上面的参数调用myController,包括注入的$ modal。 $ modal在控制器中未定义。

奇怪的是我可以看到ui.bootstrap在那里,因为检查加载的模块我可以看到它存在,其他组件也是如此。例如,angular.modules(' ui.bootstrap')返回ok。如果我拼写错误,或输入虚拟名称 - 它会像我期待的那样抱怨。

有趣的是,如果我输入“不好”的情况,同样适用。针对控制器的注入注释。例如:

application.controller('myController', ['$rootScope', '$scope', '$modalXXXYYY', someModule.myController]);

返回:

[$injector:unpr] Unknown provider: $modalXXXYYYProvider <- $modalXXXYYY <- myController

我不确定这里发生了什么 - 或者如何诊断它。我已经检查了一些显而易见的事情,比如它是否被加载了两次,但似乎没有这样的事情发生。它总体上是一个非常大的应用程序,因此大大简化了,但任何输入都会非常受欢迎。

提前致谢,

1 个答案:

答案 0 :(得分:0)

好的,我已经弄明白了 - 现在我觉得很蠢。

基本上我并没有以任何方式保持传入的值,所以虽然$ modal传递给控制器​​,但我调试的点(在控制器方法中)不再有范围内的变量 - 这给了我(假)的印象,它实际上并没有真正传递它。

这只是将值保存到控制器的情况,例如_controller.modalService = $ modal,并将其整理出来。