UI-路由器和解析,控制器中的未知提供者

2024-04-22

我在 UI-Router .state() 调用中使用解析。在我的控制器中,我可以毫无问题地访问这些值,但它会抛出错误,如下所示:

$injector/unpr?p0=ctrlOptionsProvider%20%3C-trlOptions

以下代码引发错误,但允许我访问该变量ctrlOptions正好:

.state('new_user', {
            url: "/user/new",
            templateUrl: "views/user/new.html",
            data: {pageTitle: 'New User'},
            controller: "UserController",
            resolve: {

                ctrlOptions: ['$stateParams', function($stateParams) {

                    return {

                        view: 'new_user',
                    }
                }],
                deps: ['$ocLazyLoad', function($ocLazyLoad) {
                    return $ocLazyLoad.load({ 
                        name: 'MetronicApp',  
                        insertBefore: '#ng_load_plugins_before', // load the above css files before '#ng_load_plugins_before'
                        files: [
                            '../../../assets/global/plugins/bootstrap-datepicker/css/datepicker3.css',
                            '../../../assets/global/plugins/select2/select2.css',

                            '../../../assets/global/plugins/bootstrap-datepicker/js/bootstrap-datepicker.js',
                            '../../../assets/global/plugins/select2/select2.min.js', 
                        ]                    
                    });
                }]
            }
        })

MetronicApp.controller('UserController', ['$rootScope', '$scope', '$http', '$stateParams', 'ctrlOptions', function($rootScope, $scope, $http, $stateParams, ctrlOptions, $timeout) {}

知道如何解决这个问题吗?

Thanks


Remove ng-controller="UserController"从你的角度来看,让路由器实例化控制器。

当您在绑定到路由的控制器中使用路由解析参数作为依赖项注入时,您不能将该控制器与 ng-controller/或任何其他指令一起使用,因为具有名称的服务提供者ctrlOptions不存在。它是一个动态依赖项,由路由器在实例化要绑定到其各自部分视图中的控制器时注入。当路由器可以实例化控制器并将控制器绑定到该模板时,最好不要使用 ng-controller 实例化控制器并使用 ng-controller 指令启动模板,模板将更具可重用性,因为它与控制器不紧密耦合名称(带有 ng-controller="ctrlName" ),但仅限于合同。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UI-路由器和解析,控制器中的未知提供者 的相关文章

随机推荐