使用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
服务,似乎没有这样做。我试图从指令上通过attributes
传递的link
参数解析它,但是所有这些都是一个巨大的字符串并不是那么有用。
在任何地方都有关于此的信息吗?
经过与我相比有更多经验的人审核后,我采取了不同的方法,因为这显然不适合使用过滤器。
我要使用的方法是在指令上创建属性,例如表达式..
<div c-data-bind="{ value: 'Model.Tags', format: 'json' }"></div>
我选择了这种方法,因为预期输入中存在一定的一致性(总是要求将内容包含在''
中而不是引用类型之间的不匹配),并且它允许扩展指令而不必稍后添加更多指令。我不确定这是不是一个好方法,但是...... 似乎正在工作。
答案 0 :(得分:1)
你的方法已经结束了。指令不应该与过滤器有关。
过滤器将根据其逻辑处理绑定数据。
该指令将接收过滤后的数据并根据其逻辑对其进行操作。
这两个人都不需要知道另一个。如果你需要它们,你的设计是有缺陷的。