【问题标题】:Bootstrap UI - $modal remains undefinedBootstrap UI - $modal 仍未定义
【发布时间】:2015-07-16 18:54:52
【问题描述】:

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

我已经知道它被正确注入了,因为 Typeahead 组件工作正常。我刚刚开始将在控制器中调用 JQuery 模态的旧代码切换到引导程序中,以使它们更具可测试性,但由于某种原因,即使我将 $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

我不确定这里发生了什么 - 或者如何诊断它。我已经检查了明显的事情,比如它是否被加载了两次,但似乎没有这样的事情发生。总体而言,这是一个相当大的应用程序,因此已大大简化,但任何输入都将不胜感激。

提前致谢,

托尼

【问题讨论】:

  • 您是否忘记将$modal 注入控制器功能?它在依赖项数组中,但未显示函数
  • 感谢您的回复。我已经使用上面控制器文件中的 sn-p 进行了更新。

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


【解决方案1】:

好吧,我想通了 - 现在我觉得自己很愚蠢。

基本上我并没有以任何方式保留传入的值,因此当 $modal 被传递给控制器​​时,我正在调试的点(在控制器方法中)不再具有范围内的变量 - 这给了我的(错误)印象是它实际上根本没有通过它。

这只是将值保存到控制器的情况,例如_controller.modalService = $modal,这样就搞定了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-04
    • 2013-12-11
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    • 2020-11-11
    • 1970-01-01
    相关资源
    最近更新 更多