我有自定义指令声明,replace 设置为 true。
当我将它放在带有单独关闭标记的 html 中时:
<div>
<search-box search="search(query)" query="query" ></search-box>
<div class="dataDiv">
<!--other div elements -->
</div>
</div>
一切都按预期进行。
但是以这种方式重写html后:
<div>
<search-box search="search(query)" query="query" />
<div class="dataDiv">
<!--other div elements -->
</div>
</div>
指令用它的模板完全替换所有父 div 内容,并从生成的 html 页面中删除 dataDiv。
这是预期的 Angular 行为还是可以在指令声明中更改的内容?
指令:
function SearchBox() {
return {
restrict: 'E',
replace: true,
template: '...',
scope: {
query: '='
},
link: function($scope, $element){
...
},
controller: function ($scope) {
...
}
}
}
最佳答案
根据您的文档类型,您可能会给“结束”斜杠赋予错误的含义。
默认情况下,yeoman 生成器和 Angular 种子使用 <!doctype html>
(html5)
在 HTML 5 中,<foo />
意味着<foo>
。斜杠就是 syntactic sugar
检查这个Are (non-void) self-closing tags valid in HTML5?
根据浏览器的实现,它会自动在一个地方或另一个地方添加结束标记,就像您离开 body
时一样或strong
打开并阅读渲染的代码。
关于javascript - Angularjs指令删除父div中的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23273236/