为什么replace=true
还是replace=false
没有在下面的代码产生任何影响?
当replace = false时为什么不显示“某些现有内容”?
或者更谦虚地讲,您能否解释replace=true/false
指令中的功能以及如何使用它?
例
JS /角度:
<script>
angular.module('scopes', [])
.controller('Ctrl', function($scope) {
$scope.title = "hello";
})
.directive('myDir', function() {
return {
restrict: 'E',
replace: true,
template: '<div>{{title}}</div>'
};
});
</script>
HTML:
<div ng-controller="Ctrl">
<my-dir><h3>some existing content</h3></my-dir>
</div>
在此处查看Plunker:
http://plnkr.co/edit/4ywZGwfsKHLAoGL38vvW?p=preview
拥有后,replace: true
您将获得以下DOM:
<div ng-controller="Ctrl" class="ng-scope">
<div class="ng-binding">hello</div>
</div>
而随着replace: false
你得到这个:
<div ng-controller="Ctrl" class="ng-scope">
<my-dir>
<div class="ng-binding">hello</div>
</my-dir>
</div>
因此replace
,伪指令中的属性是指应用伪指令的元素(<my-dir>
在这种情况下)是否应保留(replace: false
),并且伪指令的模板应 附加 为其子元素,
要么
应用指令的元素应由指令的模板 替换 (replace: true
)。
在这两种情况下,元素的子元素(将对其应用指令)都将丢失。如果您想保留元素的原始内容/子元素,则必须对其进行转义。可以使用以下指令:
.directive('myDir', function() {
return {
restrict: 'E',
replace: false,
transclude: true,
template: '<div>{{title}}<div ng-transclude></div></div>'
};
});
在这种情况下,如果在指令的模板中有一个具有attribute的元素(或多个元素)ng-transclude
,则其 内容
将被该元素(对其应用指令)的原始内容替换。
请参见翻译示例http://plnkr.co/edit/2DJQydBjgwj9vExLn3Ik?p=preview
问题内容: 在本文档中:http : //docs.angularjs.org/guide/directive,其中说到指令有一个配置: template- 用HTML的内容替换当前元素。替换过程将所有属性/类从旧元素迁移到新元素。有关更多信息,请参见下面的“创建组件”部分。 JavaScript代码 HTML代码 但是最后一页看起来像: 似乎不起作用。我想念什么吗? 现场演示:http://pl
本文向大家介绍AngularJS使用自定义指令替代ng-repeat的方法,包括了AngularJS使用自定义指令替代ng-repeat的方法的使用技巧和注意事项,需要的朋友参考一下 前言 大家都知道对于处理小数量,ng-repeat是非常有用的,但是如果需要处理非常大的数量集,还是采用自定义的方法更好一些。特别是数据大多都是静态的或已预存储好的,这个时候应避免使用ng-repeat指令。 ng-
问题内容: 我将如何在angularjs中创建一个指令,例如采用以下元素: 并将其转换为此 我已经编写了用于自动链接函数中的文本并返回html的功能(让我们将函数称为“ autoLink”),但是我对指令不满意。 我还想向元素添加属性,以将对象传递给指令。例如 其中link.props是{a:’bla bla’,b:’waa waa’}之类的对象,该对象将作为第二个参数传递给autoLink函数(
问题内容: 如果我有一个没有模板的AngularJS指令,并且希望它在当前作用域上设置一个属性,那么最好的方法是什么? 例如,计算按钮点击次数的指令: 使用伪指令将点击计数分配给双向属性中的表达式: 有一个更好的方法吗?从我所读的内容来看,孤立的作用域会过大,但是我需要一个子作用域吗?除了使用以外,还有没有更干净的方法可以写回指令属性中定义的范围变量。我只是觉得我很难过。 这里有完整的柱塞。 问题
问题内容: 我是AngularJS的新手,目前正在处理一个输入字段,该字段可以一次接受多个标签以及自动完成功能,该功能将可用标签显示为下拉选项。为此,我使用在Web上找到的指令(http://mbenford.github.io/ngTagsInput/),该指令为我提供了一个自定义HTML元素。这很漂亮: : : 但是,我想使用标准HTML 元素而不是指令附带的自定义元素,因此,在很多帮助和使用
问题内容: 此自定义验证指令是官方角度网站上提供的示例。 http://docs.angularjs.org/guide/forms会 检查文本输入是否为数字格式。 为了对该代码进行单元测试,我编写了以下代码: 然后我得到这个错误: 我到处都放置了print语句以查看发生了什么,而且该指令似乎从未被调用过。测试像这样的简单指令的正确方法是什么? 问题答案: 另一个答案的测试应写为: 请注意,now