我有一个带有模块定义的网页(myModule),我正在使用它来增强
angularjs
angular.bootstrap(element,[myModule.name]);
点击一个按钮后,我添加动态html并使用编译
$compile('<my-element data="data"></my-element>',$scope.$new());
该指令是使用添加的
myModule.directive('myElement',function(){});
问题是当我在调用bootstrap之前添加指令时,$compile最终正确处理我的指令.但是,如果在调用bootstrap之后添加了该指令,则$compile对我的html没有任何作用.它只是将类ng-scope添加到它,并且不处理指令/标记.
在我的例子中,并不是所有的指令都会在调用bootstrap之前加载.在我调用bootstrap后加载指令的情况下,如何在页面中使用它?
谢谢.
编辑:
只是为了澄清.所有指令都是动态加载的.我在bootstrapping之前加载的工作正常.我在引导后加载的那些失败了.当我交换加载的指令时,我可以得到相同的结果,因此它不是指令,但似乎是在引导后,新添加的指令似乎没有生效.
注册延迟控制器或指令的事情是你必须分别获得$controllerProvider和$compileProvider.
它只能在配置阶段完成,因此您必须保留引用,直到加载控制器/指令.
最近我正在加载控制器的延迟加载,今天我已经添加了对指令的支持,请在这里查看我的代码:
https://github.com/matys84pl/angularjs-requirejs-lazy-controllers/
特别是这个模块lazy-directives.js
注意:我在我的项目中使用RequireJS,但是将我的解决方案应用于yepnope应该非常简单.