设为首页 收藏本站
查看: 855|回复: 0

[经验分享] angularJS之使用过滤器转化输出 (angularJS系列最后一篇)

[复制链接]

尚未签到

发表于 2017-2-23 11:08:39 | 显示全部楼层 |阅读模式
在视图模板中使用过滤器
  过滤器也是一种服务,负责对输入的内容进行处理转换,以便更好地向用户显示。
  过滤器可以在模板中的{{}}标记中使用:

  • {{ expression | filter:arg1:arg2}}


  • 预置的过滤器
  AngularJS的ng模块实现了一些预置的过滤器,如:currency、number等等,可以直接 使用。例如下面的示例将对数字12使用currency过滤器,结果将是"$12.00":

  • {{12|currency}}


  • 带参数的过滤器
  过滤器也可以有参数,例如下面的示例将数字格式化为"1,234.00":

  • {{1234|number:2}}


  • 过滤器流水线
  过滤器可以应用于另一个过滤器的输出,就像流水线,语法如下:

  • {{expression|filter1|filter2|...}}
  使用过滤器的示例(http://www.dwz.cn/26R4S5 中“使用过滤转换输出”第一页)。
在代码中使用过滤器
  别忘了过滤器也是一种服务,所以你可以将它注入你的代码中。
  和普通的服务不同,过滤器在注入器中注册时,名称被加了一个后缀:Filter。 例如,number过滤器的服务名称是:numberFilter,而currency过滤器的服务名称是: currencyFilter。
  通常我们的代码被封装在三个地方:控制器、服务、指令。这些地方都支持服务的直接 注入,例如:

  • angular.module('myModule',[])
  • .controller(function($scope,numberFilter){
  • //...
  • })
  有时你需要显式的通过注入器调用过滤器,那么使用注入器的invoke()方法:

  • angular.injector(['ng'])
  • .invoke(function(numberFilter){
  • //...
  • })
  总之,记住过滤器是一种服务,除了名字需要追加Filter后缀,和其他服务的调用方法没 什么区别。
  示例(http://www.dwz.cn/26R4S5 中“使用过滤转换输出”第二页)在控制器中注入了number和currency过滤器,实现对total的格式化。
创建过滤器
  和指令类似,过滤器也是一种特殊的服务,与创建一个普通的服务相比较:

  • 必须使用模块的filter()接口注册服务
  • 必须提供对象工厂/factory方法
  • 对象工程必须返回一个过滤器函数,其第一个参数为输入变量

  • //定义过滤器类工厂
  • var filterFactory = function(){
  • //定义过滤器函数
  • var filter = function(input,extra_args){
  • //process input and generate output
  • return output
  • }
  • };
  • //在模块上注册过滤器
  • angular.module("someModule",[])
  • .filter("filterName",filterFactory);
为过滤器增加参数
  过滤器的行为可以通过额外的参数来调整。比如,我们希望改进上一节的示例,使其可以 支持仅大写每个单词的首字母。

  • 实现
  通过在过滤器类工厂返回的过滤器函数中传入额外的参数,就可以实现这个功能。

  • var filter = function(input,argument1,argument2){...}


  • 使用
  在使用过滤器时,额外的参数通过前缀:引入,比如

  • {{expression|filter:argument1:argument2}}
  参考资料:http://www.dwz.cn/26R4S5

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-346149-1-1.html 上篇帖子: angularJS之使用过滤器转化输出 (angularJS系列最后一篇) 下篇帖子: 2015.4.21 实现一般免登陆,微博QQ分享,字体自适应等
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表