動(dòng)態(tài)加載AngularJS控制器我有一個(gè)現(xiàn)有的頁面,我需要?jiǎng)h除一個(gè)帶有可以動(dòng)態(tài)加載的控制器的角度應(yīng)用程序。這是一個(gè)片段,它根據(jù)API和我發(fā)現(xiàn)的一些相關(guān)問題實(shí)現(xiàn)了我應(yīng)該如何完成的最佳猜測:// 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。請(qǐng)注意,這是實(shí)際事件鏈的簡化,上面的行之間有各種異步調(diào)用和用戶輸入。當(dāng)我嘗試運(yùn)行上面的代碼時(shí),$ compile返回的鏈接器拋出:Argument 'Ctrl' is not a function, got undefined。如果我正確理解了引導(dǎo)程序,它返回的注入器應(yīng)該知道Foo模塊,對(duì)吧?相反,如果我使用一個(gè)新的注入器angular.injector(['ng', 'Foo']),它似乎工作,但它創(chuàng)建一個(gè)新的$rootScope,不再與Foo模塊被引導(dǎo)的元素相同的范圍。我使用正確的功能來做這件事還是我錯(cuò)過了什么?我知道這不是以Angular方式進(jìn)行的,但是我需要添加使用Angular的新組件到?jīng)]有的舊頁面,而且我不知道在引導(dǎo)模塊時(shí)可能需要的所有組件。
動(dòng)態(tài)加載AngularJS控制器
慕尼黑8549860
2019-07-30 11:30:17