Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了angularjs – 在ng重复中动态应用格式化过滤器大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我的目标是应用一个被设置为循环对象的属性的格式化过滤器。

采取这个对象数组:

[
  {
    "value": "test value with null formatter","formatter": null,},{
    "value": "uppercase text","formatter": "uppercase",{
    "value": "2014-01-01","formatter": "date",}
]

我试图写的模板代码是这样的

<div ng-repeat="row in list">
    {{ row.value | row.formatter }}
</div>

我希望看到这个结果:

test value with null formatter
UPPERCASE TEXT
Jan 1,2014

但也许obviusly这个代码引发一个错误

UnkNown provider: row.formatterFilterProvider <- row.formatterFilter

我不能忘记如何解析{{}}中的“formatter”参数;谁能帮助我?

参见plunkr http://plnkr.co/edit/YnCR123dRQRqm3owQLcs?p=preview

|是一个角度构造,找到一个具有该名称的定义的过滤器,并将其应用于左侧的值。我想你需要做的是创建一个过滤器,以一个过滤器名称作为参数,然后调用适当的过滤器 (fiddle)(改编自M59的代码):

HTML:

<div ng-repeat="row in list">
    {{ row.value | picker:row.formatter }}
</div>

Javascript:

app.filter('picker',function($filter) {
  return function(value,filterName) {
    return $filter(filterName)(value);
  };
});

感谢@ karlgold的评论,这里是一个支持参数的版本。第一个示例直接使用add过滤器将数字添加到现有数字,第二个使用useFilter过滤器通过字符串选择添加过滤器,并将参数传递给它(fiddle)

HTML:

<p>2 + 3 + 5 = {{ 2 | add:3:5 }}</p>
<p>7 + 9 + 11 = {{ 7 | useFilter:'add':9:11 }}</p>

Javascript:

app.filter('useFilter',function($filter) {
    return function() {
        var filterName = [].splice.call(arguments,1,1)[0];
        return $filter(filterName).apply(null,arguments);
    };
});

大佬总结

以上是大佬教程为你收集整理的angularjs – 在ng重复中动态应用格式化过滤器全部内容,希望文章能够帮你解决angularjs – 在ng重复中动态应用格式化过滤器所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。