替换comment-directive的内容

时间:2013-04-24 05:52:46

标签: angularjs angularjs-directive

我坚持使用动态模板作为指令。主要是指令作为评论。

例如,我创建了一个应该检查元素类型和适当模板的指令。在链接函数中,我检查范围中元素的属性类型,并选择所需的模板。

如果我将指令作为属性或元素调用,则一切正常。但是,如果我将其称为注释,则没有任何反应,输出为空。

这里是该指令的代码:

app.directive('inQux', function ($compile) {
    var template, inQux, linker;

    template = {
        foo: '<div>I\'m foo. {{item.value}}</div>',
        bar: '<div>I\'m bar. {{item.value}}</div>'
    };


    linker = function ($scope, element, attrs) {
        var content = $compile(template[$scope.item.type])($scope);

        element.append(content);
    };

    inQux = {
        restrict: 'AME',
        replace: true,
        link: linker
    };

    return inQux;
});

您可以按照the link

找到完整示例

所以,我的问题是有没有办法替换comment-directive的内容?

1 个答案:

答案 0 :(得分:1)

在指令作为注释的情况下,似乎你不能在指令的link函数中使用element.append()。但解释很简单:不可能将元素附加到注释节点。

如果您使用其他方法(将模板直接绑定到您的指令),请执行以下操作:

app.directive('inQux', function ($compile) {
    var inQux;

    inQux = {
        template: '<div>I\'m {{item.type}}. {{item.value}}</div>',
        restrict: 'AME',
        replace: true
    };

    return inQux;
});

...并且像这个jsfiddle一样有效。作为额外的优势,指令的代码现在要小得多......但我不知道你想在原始应用程序中实现什么。