我試圖創建一個NG應用程序,其中可以動態地啓用/禁用部件。這個想法是有一個「管理」頁面,其中的部分應用程序可以啓用或禁用,然後看到新的功能出現,在頁面頂部的調整菜單的形式和匹配的路線,控制器等加載到應用程序中(我正在使用SocketStream w/NG)。稍後添加控制器
第一步是動態地添加/刪除路由,爲此我找到了一個解決方案https://stackoverflow.com/a/13173667 - 據我所知,運行良好。
接下來,將項目添加到菜單欄 - 使用ul-li項目的ng-repeat輕鬆實現。
因此,該應用程序調整其菜單並識別相應的路線。到現在爲止還挺好。
問題出現在註冊控制器。我打電話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(需要node/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