gpt4 book ai didi

angularjs - 在配置 block 之外使用 Angular compileProvider

转载 作者:行者123 更新时间:2023-12-02 23:54:05 25 4
gpt4 key购买 nike

我正在尝试动态创建指令,实际上我实现了这一点,但接缝相当老套。

这是我的第一个方法:

function create(myDir) {
angular.module("app").directive(myDir.name, function() {
return {
template:myDir.template
};
});
}

它不起作用,因为应用程序启动后无法注册指令。

基于这篇文章:http://weblogs.thinktecture.com/pawel/2014/07/angularjs-dynamic-directives.html

我发现我可以使用compileProvider来完成这项工作,但是由于compileProvider在配置 block 之外不可用,因此您需要将其放在外面,所以我这样做了:

var provider = {};
angular.module("app",[]);

angular.module('app')
.config(function ($compileProvider) {
//It feels hacky to me too.
angular.copy($compileProvider, provider);
});
....

function create(myDir) {
provider.directive.apply(null, [myDir.name, function () {
return { template: myDir.template } }]);
render(myDir); //This render a new instance of my new directive
}

令人惊讶的是它有效。但我不想破解 compileProvider,因为我没有按照预期的方式使用它,我真的很想知道是否是这样应用程序启动后可以正确使用compileProvider

最佳答案

有一个可以注入(inject)到 config block 的依赖项列表(这些是内置的 $provide$injector 和所有服务提供者)以及可以注入(inject)到其他任何地方的依赖项列表(服务实例和旧的 $injector)。正如你所看到的,constant 所做的就是 adding the dependency to both lists .

config 之外使用提供程序的常见方法是

app.config(function ($provide, $compileProvider) {
$provide.constant('$compileProvider', $compileProvider);
});

关于angularjs - 在配置 block 之外使用 Angular compileProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32870712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com