【问题标题】:Can this angular directive be Improved?这个角度指令可以改进吗?
【发布时间】:2015-03-24 23:40:57
【问题描述】:

我创建了一个浮动标签指令,它获取现有占位符的值并将其放入用作浮动标签的 div 元素中。然后删除占位符属性并隐藏标签标签。该指令工作正常,但我担心它如何操作 DOM。我想知道是否有更好(更清洁)的方法: 1)管理浮动标签div元素的模板:

  var template = '<div class="floating-label">{{ placeholder }}</div>';

  //append floating label template
  $element.after($compile(template)($scope));

2) 通过 for 属性(与输入关联的那个)找到标签标签:

document.querySelector('label[for="' +  $scope.id +  '"]').style.display = 'none';

需要注意的是使用了jqLit​​e。 (没有 jQuery)

带有指令的plunker

【问题讨论】:

  • 为什么不使用嵌入?
  • 另外,我相信这种问题在Code Review 网站上更合适,因为实际上没有您要解决的问题。
  • 嵌入有哪些改进?
  • 我认为@Claies 提出了嵌入,因为您正在手动编译模板。
  • 是的,在我有机会真正深入审查 plunker 之前,我根据 $compile 声明提到了嵌入。看了之后,我很快意识到我的想法有点不对劲。

标签: angularjs angular-directive


【解决方案1】:

看起来还不错,就几个cmets:

  • 我会放弃隔离作用域,只使用attrs 参数;消除了对 $compile 服务的需要。
  • 不需要 ngModel
  • 考虑删除节点。 (我可以选择任何一种方式)
  • reference my changes

【讨论】:

  • 接受它,因为它有有效的积分。我不会删除标签标签,因为它是此处所述的辅助功能:coolfields.co.uk/2011/04/…
  • 哦,好点。我总是遇到 503 的麻烦。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-19
  • 1970-01-01
相关资源
最近更新 更多