Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 参数';OSSCDETAILCTRACTRL';不是默认操作,在使用Firefox重新加载页面时未定义_Javascript_Angularjs_Firefox - Fatal编程技术网

Javascript 参数';OSSCDETAILCTRACTRL';不是默认操作,在使用Firefox重新加载页面时未定义

Javascript 参数';OSSCDETAILCTRACTRL';不是默认操作,在使用Firefox重新加载页面时未定义,javascript,angularjs,firefox,Javascript,Angularjs,Firefox,我刷新页面时遇到了这个问题。这个问题只有在我使用Firefox作为浏览器时才会出现,而不是在我使用Chrome浏览器时。 有人能帮我解决这个问题吗 这是我的控制器的代码 (function () { 'use strict'; angular.module('osscApp') .controller('osscDetailCtaCtrl', ['$stateParams', 'ctaSectionsServices','PropertiesServiceOs

我刷新页面时遇到了这个问题。这个问题只有在我使用Firefox作为浏览器时才会出现,而不是在我使用Chrome浏览器时。 有人能帮我解决这个问题吗

这是我的控制器的代码

(function () { 
 'use strict';
    angular.module('osscApp')
    .controller('osscDetailCtaCtrl',
        ['$stateParams', 'ctaSectionsServices','PropertiesServiceOssc', 'cityServicesOssc','shareDataServices',
            function ( $stateParams, ctaSectionsServices, PropertiesServiceOssc, cityServicesOssc, shareDataServices ) {

                var vm = this;
                var apiCtaUrl = PropertiesServiceOssc.getUrl("urlOsscCtaApi");
                vm.id = $stateParams.id;
                var ctaDetailUrl = apiCtaUrl + vm.id + "/detail"; 

                vm.url = apiCtaUrl; 
                vm.disabled = true;

                vm.message = "";
                vm.alertClass = "";

                vm.data = {};

                vm.filesCore = [];
                vm.filesCentre = [];
                vm.filesAuthority = [];
                vm.filesCta = [];

                var object = shareDataServices.get( vm.id + 'CTA' );
                var eventId = object && object.eventId ? ( Array.isArray ( object.eventId ) ? 0 : object.eventId ) : 0;

                vm.countries = [];
                cityServicesOssc.getCountries( function ( response ){
                    if( response ){
                        vm.countries = response;
                    }
                });

                vm.memberStates = [];
                cityServicesOssc.getMemberStates( function ( response ){
                    if( response ){
                        vm.memberStates = response;
                    }
                });

                vm.regions = [];
                cityServicesOssc.getRegions( 117, function ( response ){
                    if( response ){
                        vm.regions = response;
                    }
                });

                ctaSectionsServices.getCta( ctaDetailUrl + "/" + eventId, function ( response, errors ){
                    if( response ){
                            vm.data = response;
                    }else{
                        vm.message = errors.message;
                        vm.alertClass = errors.alertClass;
                    }
                });             
            }
        ]);
})();
这是一个浏览器控制台屏幕截图


它也应该发生在铬合金中

确保已将空依赖项添加到模块中

 angular.module('osscApp',[])

经过彻底的研究,我找到了这个问题的原因和解决办法。在我的项目中,我通过ocLazyLoad和ui路由器使用惰性负载依赖关系来更改“app.js”中的状态。我注意到,在延迟加载中,库的加载顺序并不总是与定义的顺序相同,因此,如果控制器A在理论上使用服务B,那么应该加载服务B,最后加载控制器A。不幸的是,尽管依赖项是按正确的顺序声明的,但通常ocLazyLoad显然是按随机顺序加载的,因此有时先加载B服务,然后加载控制器(站点导航继续正确),有时先加载控制器(并运行它)然后B服务中断应用程序并在浏览器控制台中触发类似于上面所示的错误。第二种情况尤其发生在使用Firefox浏览器刷新页面时(每次刷新时,有时甚至在某些状态更改时)。为了解决这个问题,我声明了每个应用程序状态的依赖项,通过使用ocLazyLoad的参数“serie:true”强制它们串联加载。 以前的代码:

//the dependencies are loaded in random order on refresh state ( break the app)
$stateProvider.state('ossc.ctaDetail', {
                url: '/clinicalTrial/:id/detail',
                ncyBreadcrumb: {
                    label: '{{"DETAIL_CTA" | translate}}',
                    parent: 'ossc.searchCta'
                },
                views: {
                    'content': {
                        templateUrl: './modules/ossc/html/cta/osscDetailCta.html',
                        controller: 'osscDetailCtaCtrl',
                        controllerAs: 'ctaCtrl'
                    },
                    'menu': {
                        templateUrl: './modules/menu/html/menu.html',
                        controller: 'menuCtrl'
                    }
                },
                resolve: {
                    translate: ['RequireTranslations', function( RequireTranslations ){
                        RequireTranslations( translationCta, translationApp );
                        RequireTranslations( translationCta + '/'+ translationSelect , translationApp );
                        RequireTranslations( translationCta + '/'+ translationTitles , translationApp );
                    }],                   
                    '':['$ocLazyLoad', function ($ocLazyLoad){
                        return $ocLazyLoad.load({
                                        name:'dependencies',
                                        files:[
                                            'modules/ossc/js/services/ctaSectionsServices.js',
                                            'modules/ossc/js/services/propertiesServiceOssc.js',
                                            'modules/ossc/js/services/shareDataServices.js',
                                            'modules/ossc/js/controllers/cta/osscDetailCtaCtrl.js',
                                            ],
                        });
                    }]
                }
            })
通过的解决方案:

$stateProvider.state('ossc.ctaDetail', {
                url: '/clinicalTrial/:id/detail',
                ncyBreadcrumb: {
                    label: '{{"DETAIL_CTA" | translate}}',
                    parent: 'ossc.searchCta'
                },
                views: {
                    'content': {
                        templateUrl: './modules/ossc/html/cta/osscDetailCta.html',
                        controller: 'osscDetailCtaCtrl',
                        controllerAs: 'ctaCtrl'
                    },
                    'menu': {
                        templateUrl: './modules/menu/html/menu.html',
                        controller: 'menuCtrl'
                    }
                },
                resolve: {
                    translate: ['RequireTranslations', function( RequireTranslations ){
                        RequireTranslations( translationCta, translationApp );
                        RequireTranslations( translationCta + '/'+ translationSelect , translationApp );
                        RequireTranslations( translationCta + '/'+ translationTitles , translationApp );
                    }],                   
                    '':['$ocLazyLoad', function ($ocLazyLoad){
                        return $ocLazyLoad.load([
                                    {
                                        name:'dependencies',
                                        files:[
                                            'modules/ossc/js/services/ctaSectionsServices.js',
                                            'modules/ossc/js/services/propertiesServiceOssc.js',
                                            'modules/ossc/js/services/shareDataServices.js',
                                            'modules/ossc/js/services/ctaSectionsServices.js',
                                            ],
                                        serie:true,
                                    },
                                    {
                                        name:'controller',
                                        files:[
                                            'modules/ossc/js/controllers/cta/osscDetailCtaCtrl.js',
                                            ],
                                        serie:true,
                                    }
                            ]);
                    }]
                }
            })

我希望这个解决方案能帮助那些有我自己问题的人。

这是你唯一引用的js文件吗?是的,引用这个控制器时出错。Chrome中不会发生这种情况。当您要定义新模块时,应该添加空的依赖项,而不是在这种情况下,因为此控制器是现有模块的一部分。您引用的模块“osscApp”在另一个js文件中使用所有依赖项正确定义。