動態加載AngularJS控制器我有一個現有的頁面,我需要刪除一個帶有可以動態加載的控制器的角度應用程序。這是一個片段,它根據API和我發現的一些相關問題實現了我應該如何完成的最佳猜測:// Make module Fooangular.module('Foo', []);// Bootstrap Foovar injector = angular.bootstrap($('body'), ['Foo']);// Make controller Ctrl in module Fooangular.module('Foo').controller('Ctrl', function() { });// Load an element that uses controller Ctrlvar ctrl = $('<div ng-controller="Ctrl">').appendTo('body');// compile the new elementinjector.invoke(function($compile, $rootScope) { // the linker here throws the exception $compile(ctrl)($rootScope);});JSFiddle。請注意,這是實際事件鏈的簡化,上面的行之間有各種異步調用和用戶輸入。當我嘗試運行上面的代碼時,$ compile返回的鏈接器拋出:Argument 'Ctrl' is not a function, got undefined。如果我正確理解了引導程序,它返回的注入器應該知道Foo模塊,對吧?相反,如果我使用一個新的注入器angular.injector(['ng', 'Foo']),它似乎工作,但它創建一個新的$rootScope,不再與Foo模塊被引導的元素相同的范圍。我使用正確的功能來做這件事還是我錯過了什么?我知道這不是以Angular方式進行的,但是我需要添加使用Angular的新組件到沒有的舊頁面,而且我不知道在引導模塊時可能需要的所有組件。
動態加載AngularJS控制器
慕尼黑8549860
2019-07-30 11:30:17