부품을 동적으로 활성화/비활성화 할 수있는 NG 응용 프로그램을 만들려고합니다. 아이디어는 앱의 일부를 사용 또는 사용 중지 할 수있는 "admin"페이지를 가지고 페이지의 상단에 조정 된 메뉴의 형태로 새로운 기능이 나타나고 라우트, 컨트롤러 등이 일치하는 것을 볼 수 있습니다. 응용 프로그램에로드 (나는 SocketStream w/NG 사용하고 있습니다).나중에 컨트롤러 추가
첫 번째 단계는 동적으로 경로를 추가/제거하는 것이 었습니다. 그 해결책은 https://stackoverflow.com/a/13173667입니다. 제대로 작동하는 한 알 수 있습니다.
다음으로 메뉴 모음에 항목을 추가하십시오. ul/li 항목에서 ng-repeat를 사용하면 쉽게 할 수 있습니다.
그래서 앱이 메뉴를 조정하고 해당 경로를 인식합니다. 여태까지는 그런대로 잘됐다.
컨트롤러를 등록 할 때 문제가 발생합니다. 적절한 args를 가진 myApp.controller('SandboxCtrl',[...])
(시작시에 정적으로 초기화 할 때와 똑같은 함수)을 호출하고 있지만, 컨트롤러가 올바르게로드되거나 삽입되지 않은 것 같습니다. 새로 추가 된 경로를 탐색하면 다음과 같은 오류가 발생합니다.
Error: Argument 'SandboxCtrl' is not a function, got undefined
[email protected]://cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.1/angular.js:973
[email protected]://cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.1/angular.js:984
@http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.1/angular.js:4638
[email protected]://cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.1/angular.js:14007
[email protected]://cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.1/angular.js:8098
@http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.1/angular.js:7258
[email protected]://cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.1/angular.js:6658
[email protected]://cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.1/angular.js:6658
@http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.1/angular.js:6695
[email protected]://cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.1/angular.js:7848
[email protected]://cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.1/angular.js:7713
[email protected]://cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.1/angular.js:7934
@http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.1/angular.js:5433
현재 진행 방법을 놓치고 있습니다. 나는 웹상에서 해결책을 찾을 수 없었다. 앱이 너무 커서 jsFiddle을 넣을 수 없지만 필요한 경우 GitHub의 마지막 변경 사항을 커밋 할 수 있습니다.
질문 : 가능한가요? 이걸 디버깅하려면 어떻게해야합니까? 내가 볼 수있는 모든 예제?
편집 : 코드는 이제 https://github.com/jcw/housemon (노드/npm/redis 필요)입니다. 문제를 재현하는 것은 간단합니다 : "npm start"로 시작하고, localhost : 3333으로 가서, admin 탭으로 가서 "jcw-sandbox"를 클릭 한 다음 "Install"을 클릭하십시오. 톱 메뉴가 새로운 "샌드 박스"항목으로 업데이트됩니다. 해당 항목을 클릭하면 위에 표시된 오류가 생성됩니다.
오, 거의 잊었다 : 관련 코드는 ... 클라이언트/코드/응용 프로그램/main.coffee 및 클라이언트/코드/모듈/routes.coffee에
코드가 제공되지 않으면 도움이 어렵습니다. – mpm
SandboxCtrl이 포함 된 JavaScript 파일을로드하고 있습니까? – WiredPrairie
안녕하세요, 게으른로드 컨트롤러를 등록하려면 $ controllerProvider를 사용해야합니다. 나는 (RequireJS와 함께) 요구에 따라 컨트롤러를로드하고 등록하는 솔루션을 가지고있다. 내 저장소를 여기에서 확인하십시오 : https://github.com/matys84pl/angularjs-requirejs-lazy-controllers – matys84pl