如何用angularFilter.js实现长尾词的过滤功能?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1896个文字,预计阅读时间需要8分钟。
Angular中的自定义过滤器使用:
在Angular项目的实际开发中,Angular内置的过滤器功能强大但功能有限。因此,我们常常根据需求自定义过滤器。以下是我项目中使用的一个自定义过滤器。
/** *在angular项目的实际开发中,angular内置的过滤器虽然强大但是很单一 *因此我们常常根据自己的需要自定义了一些过滤器, *下面是我在项目中使用的自定义过滤器,希望能够给予大家帮助 */ /** *angular中的内置过滤器 *常用:currency(货币)、date(日期)、limitTo(限制个数)、number(数字)、orderBy(排序); *了解:lowercase(小写)、uppercase(大写)、filter(子串匹配)、json(格式化json对象); */ /** *过滤器的使用方法: *1.在模板中使用filter(推荐使用,便于优化) **我们可以直接在{{}}中使用filter,跟在表达式后面用 | 分割,语法如下: **{{ expression | filter }} **也可以多个filter连用,上一个filter的输出将作为下一个filter的输入(怪不得这货长的跟管道一个样。。) **{{ expression | filter1 | filter2 | ... }} **filter可以接收参数,参数用 : 进行分割,如下: **{{ expression | filter:argument1:argument2:... }} **除了对{{}}中的数据进行格式化,我们还可以在指令中使用filter,例如先对数组array进行过滤处理,然后再循环输出: ** *2. 在controller和service中使用filter(不推荐使用) **方式就是我们熟悉的依赖注入,只需将它注入到该controller中即可 **app.controller('testC',function($scope,currencyFilter){ ** $scope.num = currencyFilter(123534); **} **在模板中使用{{num}}就可以直接输出 $123,534.00了 **angular提供了一个$filter服务可以来调用所需的filter,你只需注入一个$filter就可以使用多个filter,使用方法如下 **app.controller('testC',function($scope,$filter){ ** $scope.num = $filter('currency')(123534,[123]); 通过,分割来传递多个参数 ** $scope.date = $filter('date')(new Date()); **} */ /** *1.自定义超出内容用自定义文本显示,如果传文本用省略号显示 *@param place 超出内容限制(数量) *@param txt 代替超出部分的文本内容 *运用场景:在有限空间的元素中显示文本超出部分使用自定义文本显示 *过滤器例子:如果字符串超过5个超出部分用鸿基梦代替 *调用方法:{{gift.name | omit:5:'鸿基梦'}} */ app.filter('omit', function () { return function (name,place,txt) { if(!place&&!txt){ //如果没有传参则默认字符长度为4且文本为省略号 //转换成字符串的原因是排除number程序不能进行 return String(name).substring(0,4).concat('...') }else{ if(String(name).length>place){ //判断是否存在自定义文本 if(txt){ return String(name).substring(0,place).concat(txt) }else{ return String(name).substring(0,place).concat('...') } }else{ return String(name) } } } }); /** *2.过滤出集合中满足某种条件的元素 *@param datas 需要过滤的集合 *@param key 需要满足条件的key值 *@param val 需要满足条件的val值 *运用场景:tab切换需要获取特定条件的元素 *过滤器例子:过滤出集合langs中type = 1的所有元素(并显示其name值) *调用方法:
本文共计1896个文字,预计阅读时间需要8分钟。
Angular中的自定义过滤器使用:
在Angular项目的实际开发中,Angular内置的过滤器功能强大但功能有限。因此,我们常常根据需求自定义过滤器。以下是我项目中使用的一个自定义过滤器。
/** *在angular项目的实际开发中,angular内置的过滤器虽然强大但是很单一 *因此我们常常根据自己的需要自定义了一些过滤器, *下面是我在项目中使用的自定义过滤器,希望能够给予大家帮助 */ /** *angular中的内置过滤器 *常用:currency(货币)、date(日期)、limitTo(限制个数)、number(数字)、orderBy(排序); *了解:lowercase(小写)、uppercase(大写)、filter(子串匹配)、json(格式化json对象); */ /** *过滤器的使用方法: *1.在模板中使用filter(推荐使用,便于优化) **我们可以直接在{{}}中使用filter,跟在表达式后面用 | 分割,语法如下: **{{ expression | filter }} **也可以多个filter连用,上一个filter的输出将作为下一个filter的输入(怪不得这货长的跟管道一个样。。) **{{ expression | filter1 | filter2 | ... }} **filter可以接收参数,参数用 : 进行分割,如下: **{{ expression | filter:argument1:argument2:... }} **除了对{{}}中的数据进行格式化,我们还可以在指令中使用filter,例如先对数组array进行过滤处理,然后再循环输出: ** *2. 在controller和service中使用filter(不推荐使用) **方式就是我们熟悉的依赖注入,只需将它注入到该controller中即可 **app.controller('testC',function($scope,currencyFilter){ ** $scope.num = currencyFilter(123534); **} **在模板中使用{{num}}就可以直接输出 $123,534.00了 **angular提供了一个$filter服务可以来调用所需的filter,你只需注入一个$filter就可以使用多个filter,使用方法如下 **app.controller('testC',function($scope,$filter){ ** $scope.num = $filter('currency')(123534,[123]); 通过,分割来传递多个参数 ** $scope.date = $filter('date')(new Date()); **} */ /** *1.自定义超出内容用自定义文本显示,如果传文本用省略号显示 *@param place 超出内容限制(数量) *@param txt 代替超出部分的文本内容 *运用场景:在有限空间的元素中显示文本超出部分使用自定义文本显示 *过滤器例子:如果字符串超过5个超出部分用鸿基梦代替 *调用方法:{{gift.name | omit:5:'鸿基梦'}} */ app.filter('omit', function () { return function (name,place,txt) { if(!place&&!txt){ //如果没有传参则默认字符长度为4且文本为省略号 //转换成字符串的原因是排除number程序不能进行 return String(name).substring(0,4).concat('...') }else{ if(String(name).length>place){ //判断是否存在自定义文本 if(txt){ return String(name).substring(0,place).concat(txt) }else{ return String(name).substring(0,place).concat('...') } }else{ return String(name) } } } }); /** *2.过滤出集合中满足某种条件的元素 *@param datas 需要过滤的集合 *@param key 需要满足条件的key值 *@param val 需要满足条件的val值 *运用场景:tab切换需要获取特定条件的元素 *过滤器例子:过滤出集合langs中type = 1的所有元素(并显示其name值) *调用方法:

