Angularjs 使用filter格式化输出href
Angularjs版本: 1.3.5
工作中,由于是多级菜单,如果上级菜单为空,就会访问Angularjs 默认的state,然后再展开菜单,我找资料之后,才知道是通过filter来格式化输出数据的,格式是{{ expression | filter }}.我想要的效果是,如果href为空的话,就输出javascript:;.
自定义的Filter是:
var app = angular.module("app", []);
app.controller('HomeCtrl', function($scope) {
  $scope.menus = [
    {
      href:"",
      title:"test1"
    },
    {
      href:"http://www.domain.com",
      title:"goto"
    }
  ];
});
app.filter("menuhref",  function() {
return function(href){
	if(href == "" || href == undefined){
		return "javascript:;";
	}else{
		return href;
	}
	};
});
使用示例:
<ion-list>
<ion-item ng-repeat="menu in menus">
<a href="{{ menu.href | menuhref}}">{{menu.title}}</a>
</ion-item>
</ion-list>
显示的效果是:

链接中出现了unsafe:javascript:;的字样,意思是不安全的链接,原来可以添加链接白名单,如我的code中,链接是http:和javascript:的开头的,就可以在app.config进行定义链接白名单,如:
 .config(function($stateProvider, $urlRouterProvider,$compileProvider) {
  $compileProvider.aHrefSanitizationWhitelist(/^\s*(javascript|http):/);
});
语法是:aHrefSanitizationWhitelist([regexp]);
最终的显示效果是:

总结:
学习到了Angularjs中可以使用Filter来格式化输出的信息,链接出现unsafe字样时,可以通过$compileProvider.aHrefSanitizationWhitelist()方法设置链接白名单。
参考文献:
- Building Custom AngularJS Filters 学习到如何定义自定义Filter
- Angular changes urls to “unsafe:” in extension page 解决Angularjs的链接显示unsafe
- $compileProvider  $compileProvider文档
Angularjs 使用filter格式化输出href的更多相关文章
- Angularjs 1 使用filter格式化输出href
		Angularjs版本: 1.3.5 工作中,由于是多级菜单,如果上级菜单为空,就会访问Angularjs 默认的state,然后再展开菜单,我找资料之后,才知道是通过filter来格式化输出数据的, ... 
- Angularjs在控制器(controller.js)的js代码中使用过滤器($filter)格式化日期/时间实例
		Angularjs内置的过滤器(filter)为我们的数据信息格式化提供了比较强大的功能,比如:格式化时间,日期.格式化数字精度.语言本地化.格式化货币等等.但这些过滤器一般都是在VIEW中使用的,比 ... 
- AngularJS过滤器filter入门
		在开发中,经常会遇到这样的场景 如用户的性别分为“男”和“女”,在数据库中保存的值为1和0,用户在查看自己的性别时后端返回的值自然是1或0,前端要转换为“男”或“女”再显示出来: 如我要换个羽毛球拍, ... 
- angularjs之filter过滤器
		现在公司用ionic,就是基于angularjs封装了一些api用于webapp,最近用的angularjs的filter确实省了很多代码,现在总结一下! ng比较鸡肋的过滤器,这里就一笔带过吧!鸡汤 ... 
- AngularJS的Filter用法详解
		上一篇讲了自定义Directive,本篇是要讲到AngularJS的Filter. Filter简介 Filter是用来格式化数据用的. Filter的基本原型( '|' 类似于Linux中的管道模式 ... 
- AngularJS的日期格式化有两种形式
		AngularJS的日期格式化有两种形式,一种是在HTML页面,一种是在JS代码里,都是用到AngularJS的过滤器$filter. HTML: date_expression 即 你在$scope ... 
- 小白学python-day05-IDE、格式化输出、For While循环、断点、continue、break
		今天是day05,以下是学习总结. 但行努力,莫问前程. ----------------------------------------------------------------------- ... 
- python基础_格式化输出(%用法和format用法)(转载)
		python基础_格式化输出(%用法和format用法) 目录 %用法 format用法 %用法 1.整数的输出 %o -- oct 八进制%d -- dec 十进制%x -- hex 十六进制 &g ... 
- python的print函数的格式化输出
		使用print函数的时候,可以像C一样格式化输出,同时还支持参数化输出 print('%s' % ("CooMark")) print('整数|%d|' % (123)) prin ... 
随机推荐
- C#自定义控件背景色透明的方法
			I struggled for ages with the problem of having controls show through a control that was painted on ... 
- css 文字超出变 ... 点点点
			overflow: hidden; text-overflow: ellipsis; white-space: nowrap; 
- <创建和销毁对象>经验法则——考虑用静态工厂方法代替公有构造方法
			一.引出静态工厂方法 对于java类而言,为了让使用者获取它自身的一个实例化对象,会有以下方法: 1.该类提供一个公有的构造方法.在这种情况下,程序可以通过多个“new 构造方法”语句来创建类的任意多 ... 
- 用java发送邮件(黄海已测试通过)
			/** * java发送带附件的邮件 * 周枫 * 2013.8.10 */ package com.dsideal.Util; import javax.mail.*; import javax.m ... 
- C# 6与VB 12即将加入模式匹配
			又有一种源自于函数式编程语言中的概念加入了C#和VB的阵营,这就是被称为模式匹配(Pattern Matching)的特性.初看上去,模式匹配的作用类似于一段switch/select语句块,但它的功 ... 
- 《Java并发编程实战》第三章 对象的共享 读书笔记
			一.可见性 什么是可见性? Java线程安全须要防止某个线程正在使用对象状态而还有一个线程在同一时候改动该状态,并且须要确保当一个线程改动了对象的状态后,其它线程能够看到发生的状态变化. 后者就是可见 ... 
- cocos2d-x make: *** [clean-box2d_static-armeabi] Error 1
			/cygdrive/d/android-ndk-r8e/build/core/build-binary.mk:52: recipe for target `clean-cocos_curl_stati ... 
- [转]SQL快速入门
			原文出处:http://blog.csdn.net/xxd851116/article/details/5688263 一.基础 1.说明:创建数据库CREATE DATABASE database- ... 
- 去除重复命令uniq
			命令uniq经常用于去除一个文本中的重复行.用sort命令也可以去除重复行,但二者有较大区别:用sort去除重复行时,sort将整个文本中的多个重复行去除,仅保留一行,而uniq会将多个连续重复的行去 ... 
- Linux中的文件描述符与打开文件之间的关系
			Linux中的文件描述符与打开文件之间的关系 导读 内核(kernel)利用文件描述符(file descriptor)来访问文件.文件描述符是非负整数.打开现存文件或新建文件时,内核会返回一个文件描 ... 
