我坚持使用动态模板作为指令。主要是指令作为评论。
例如,我创建了一个应该检查元素类型和适当模板的指令。在链接函数中,我检查范围中元素的属性类型,并选择所需的模板。
如果我将指令作为属性或元素调用,则一切正常。但是,如果我将其称为注释,则没有任何反应,输出为空。
这里是该指令的代码:
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的内容?
答案 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一样有效。作为额外的优势,指令的代码现在要小得多......但我不知道你想在原始应用程序中实现什么。