这个 angular 指令可以改进吗?
Can this angular directive be Improved?
我创建了一个浮动标签指令,它获取现有占位符的值并将其放入用作浮动标签的 div 元素中。然后删除占位符属性并隐藏 label 标记。该指令工作正常,但我担心它如何操纵 DOM。我想知道是否有更好(更清洁)的方法来:
1)管理浮动标签div元素的模板:
var template = '<div class="floating-label">{{ placeholder }}</div>';
//append floating label template
$element.after($compile(template)($scope));
2) 通过 for 属性(与输入关联的那个)找到 label 标签:
document.querySelector('label[for="' + $scope.id + '"]').style.display = 'none';
需要注意的是使用了jqLite。 (没有jQuery)
plunker 与指令
看起来不错,只是一些评论:
- 我会放弃隔离作用域,只使用
attrs
参数;消除了对 $compile 服务的需求。
- 不需要 ngModel
- 考虑删除该节点。 (我可以选择任何一种方式)
- reference my changes
我创建了一个浮动标签指令,它获取现有占位符的值并将其放入用作浮动标签的 div 元素中。然后删除占位符属性并隐藏 label 标记。该指令工作正常,但我担心它如何操纵 DOM。我想知道是否有更好(更清洁)的方法来: 1)管理浮动标签div元素的模板:
var template = '<div class="floating-label">{{ placeholder }}</div>';
//append floating label template
$element.after($compile(template)($scope));
2) 通过 for 属性(与输入关联的那个)找到 label 标签:
document.querySelector('label[for="' + $scope.id + '"]').style.display = 'none';
需要注意的是使用了jqLite。 (没有jQuery)
plunker 与指令
看起来不错,只是一些评论:
- 我会放弃隔离作用域,只使用
attrs
参数;消除了对 $compile 服务的需求。 - 不需要 ngModel
- 考虑删除该节点。 (我可以选择任何一种方式)
- reference my changes