过滤后应用指令(或绑定到过滤结果,因此再次调用指令)

时间:2015-10-28 19:01:52

标签: angularjs angularjs-directive angularjs-filter

请参阅fiddle with html:

<div get-width class="output">{{ inputText | uppercase }}</div>

指令:

myApp.directive('getWidth', [function () {
  function link(scope, element, attrs) {
    scope.textSize = getTextWidth(element.text(), "95px Arial");
  }

  return {
    restrict: 'A',
    link: link
  };
}]);

在应用了所有其他子指令并应用了过滤器之后,尝试使用指令计算文本的宽度。不幸的是,过滤器似乎总是在指令之后应用。宽度计算始终在&#34; {{inputValue |大写}}&#34;而不是评估值。

如果之后应用了过滤器,我会很好,但随后因为元素发生了变化而导致重新评估该指令。但我似乎无法将指令绑定到元素上。

我不想使用参数传递所有内容或传递$ filter服务并在计算宽度之前手动过滤输入,因为我不知道可以使用哪些过滤器。其他开发人员可以使用此指令(它现在只是一个示例),因此它可以包含任何输入和任意数量的链接过滤器。有没有办法在运行getTextWidth()之前评估元素?

此功能可用于调整页面中的元素,因此我希望避免$ timeout并导致额外的油漆(闪烁)。

任何帮助都将不胜感激。

0 个答案:

没有答案