问题如题。延迟加载进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
저는 이것저것 만져보고 다음을 발견했습니다:
새 모듈을 생성하면
$ocLazyLoad.load()
는 다음과 같이 성공적으로 등록된 컴포넌트를 로드합니다$ocLazyLoad.load()
加载进来的component registered成功,如下由上边,我想到angular的另一个点,当module不带参时是getter,所以尝试如下:
ocLazyLoad debug 提示
위에서 각도의 또 다른 점을 생각했습니다. 모듈이 매개 변수를 사용하지 않으면 getter이므로 다음을 시도하십시오. 🎜 으아아아 🎜ocLazyLoad 디버그는ocLazyLoad.moduleReloaded order
으아아아ocLazyLoad.moduleReloaded order
를 프롬프트하여 성능 중인 구성 요소가 로드되고 등록이 성공하도록 합니다. 🎜 🎜오랜 시간 고생했는데 아직까지 Angle에 대한 이해와 컴포넌트 소개에 대한 익숙함이 부족합니다. G_Koala_C 답변 감사합니다, 감사합니다~🎜라우팅 해결은 일반적으로 현재 상태에서 사용되는 데이터를 미리 로드한 다음 데이터가 로드된 후 페이지를 로드합니다. 귀하의 상황에서는 게으른 로드가 필요하지 않습니다. 완전히 불필요하지 않습니까? 오류가 어디에 있는지 모르겠습니다. 아마도 두 가지 유형이 있을 것입니다.
1 쓸모가 없는 지연 로딩을 제거합니다.
2. 뷰의 컨트롤러를 loadPerformanceCtrl로 변경하고 해결 이름이 직접 변경되었습니다. 작동하는지 확실하지 않습니다.