使用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>
我之所以选择这种方法,是因为预期输入具有一定的一致性(总是要求内容包含在''
中,而不是引号类型之间不匹配),并且它允许扩展指令,而不必稍后添加更多指令。我不确定这是否是一个好方法,但是。。。它似乎正在工作。
您的方法已关闭。该指令不应与筛选器有关。
过滤器将根据其逻辑处理绑定的数据。
指令将接收过滤后的数据,并根据其逻辑对其进行操作。
两个人都不需要知道对方的情况。如果你需要他们,你的设计是有缺陷的。
请参阅关注的分离