解析链接函数中的指令

时间:2015-03-22 16:59:54

标签: angularjs angularjs-directive

我正在尝试构建一种机制,允许我在链接函数中解析指令。

示例:

angular.module('directives', [])

    .directive('myContainer', ['$compile', function ($compile) {
            return {
                restrict: "E",
                replace: true,
                link: function (scope, element, attrs) {
                   angular.forEach(scope.component.components, function(component){

                       var newScope = scope.$new()
                       newScope.component = component;
                       var elem = angular.element('<'+component.type+'>'+'</'+component.type+'>')

                       //Trying to compile directive to be resolved
                       var resolvedDirective = $compile(elem)(scope) 
                       element.append(resolvedDirective)
                  })
                }
            });

问题是,&#34; resolvedDirective&#34; (由component =&gt; type定义)只是创建一个包含其他指令名称的标记,稍后将对其进行解析。

为了示例,我的机制被简化了(递归...)

希望我的问题足够明确......

提前致谢!

1 个答案:

答案 0 :(得分:0)

您的问题需要更清晰。请更新您指令的预期结果。

您可以遵循此模式。这个答案解释了如何在指令

中添加编译指令

Angularjs directive add directives as attribute and bind them dynamically

在您的情况下,您想要附加新指令,编译并绑定它。

因此,请尝试在编译阶段中添加附加元素,并在postLink阶段使用 $ compile