angular.js - ocLazyLoad配合ui-router延迟加载controller,controller提示 not a
某草草
某草草 2017-05-15 17:10:08
0
2
534

问题如题。延迟加载进controller文件后,controller提示不存在。

贴代码:

state:

//state
$stateProvider.state('user.performance', {
                url: '/performances',
                views: {
                    '': {
                        controller: 'PerformanceCtrl',
                        templateUrl: 'tpl/user/performance'
                    }
                },
                resolve:{
                  loadPerformanceCtrl: ["$ocLazyLoad", function ($ocLazyLoad) {
                      return $ocLazyLoad.load('/app/performance/performance.js');//js文件有成功加载进来
                  }]
                }
            })

performance.js

;(function () {
    'use strict';
     myApp.controller('PerformanceCtrl', [
            '$scope',
            'PerformanceService',
            function ($scope, PerformanceService) {
                console.log('PerformanceCtrl');
                //...
        ])
   })();
// myApp 在此前加载的js中已经定义过。var myApp = angular.module('zwb', []);

报错: Argument 'PerformanceCtrl' is not a

某草草
某草草

répondre à tous(2)
習慣沉默

J'ai joué avec et j'ai trouvé :

  • Lorsque je crée un nouveau module, $ocLazyLoad.load() charge le composant enregistré avec succès, comme suit$ocLazyLoad.load()加载进来的component registered成功,如下

angular.module('testtest', []).controller('PerformanceCtrl', [
    //...
])
  • 由上边,我想到angular的另一个点,当module不带参时是getter,所以尝试如下:

angular.module('order').controller('PerformanceCtrl', [
    //...
])

ocLazyLoad debug 提示ocLazyLoad.moduleReloaded order rrreee

De ce qui précède, j'ai pensé à un autre point en angulaire Lorsque le module ne prend aucun paramètre, c'est un getter, alors essayez ce qui suit : 🎜 rrreee 🎜Le débogage ocLazyLoad demande l'ordre ocLazyLoad.moduleReloaded, afin que le composant en cours de performance soit chargé et que l'enregistrement réussisse. 🎜 🎜Je lutte depuis longtemps et ma compréhension d'Angular et ma familiarité avec l'introduction de composants ne suffisent toujours pas. Merci pour la réponse de G_Koala_C, merci~🎜
PHPzhong

La résolution du routage précharge généralement les données utilisées par l'état actuel, puis charge la page une fois les données chargées. Dans votre situation, il n'est pas nécessaire de procéder à un chargement paresseux, n'est-ce pas complètement superflu ? Je ne sais pas où se situe votre erreur. Il y en a probablement deux types :
1. Supprimez le chargement paresseux, qui ne sert à rien.
2. Remplacez le contrôleur dans les vues par loadPerformanceCtrl et la résolution a été renommée directement. Je ne sais pas si cela fonctionne.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal