recherche

Maison  >  Questions et réponses  >  le corps du texte

angular.js - ocLazyLoad配合ui-router延迟加载controller,controller提示 not a

问题如题。延迟加载进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

某草草某草草2744 Il y a quelques jours536

répondre à tous(2)je répondrai

  • 習慣沉默

    習慣沉默2017-05-15 17:12:08

    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~🎜

    répondre
    0
  • PHPz

    PHPz2017-05-15 17:12:08

    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.

    répondre
    0
  • Annulerrépondre