获取附加到指令的筛选器



使用angular,我会遇到这样的情况:我编写了一个自定义指令,然后编写了一些筛选器。

我已经做了很多搜索,但还没能找到一个明确的方法,在附加指令后将过滤器从指令中删除。它们是这样附着的;

<div ng-data-bind="Model.Tags | format:'json'"></div>

指令看起来像。。。

.directive('ngDataBind', ["$parse", "$filter", function($parse, $filter){
   return {
      restrict: "A",
      scope: {
         ngDataBind: "="
      },
      link: function(scope, element, attributes, controller) {
         // I am hoping to get the value of 'format' here (which is 'json' in this case)
      }
   }
});

现在,过滤器只是极其裸露的骨头。我还没有为它添加任何真正的功能,因为我需要做的很多事情都在指令中。

.filter('format', function(){
   return function(text, value) {
   }
});

因此,在我编写的ngDataBind指令中,我想要获得format过滤器和传递给它的参数

我看过$filter服务,但它似乎不起作用。我试图从通过指令上的link传递的attributes参数中解析它,但给我的只是一个不太有用的巨大字符串。

任何地方都有关于这方面的信息吗?

更新

在经过比我有更多经验的人的审查后,我采取了不同的方法,因为这显然不是过滤器的适当使用。

我要使用的方法是在指令上创建像表达式一样赋值的属性,例如。。

<div c-data-bind="{ value: 'Model.Tags', format: 'json' }"></div>

我之所以选择这种方法,是因为预期输入具有一定的一致性(总是要求内容包含在''中,而不是引号类型之间不匹配),并且它允许扩展指令,而不必稍后添加更多指令。我不确定这是否是一个好方法,但是。。。它似乎正在工作。

您的方法已关闭。该指令不应与筛选器有关。

过滤器将根据其逻辑处理绑定的数据。

指令将接收过滤后的数据,并根据其逻辑对其进行操作。

两个人都不需要知道对方的情况。如果你需要他们,你的设计是有缺陷的。

请参阅关注的分离

最新更新