GVKun编程网logo

如何在angular.js中从另一个过滤器调用一个过滤器(angularjs 过滤器)

17

本文将为您提供关于如何在angular.js中从另一个过滤器调用一个过滤器的详细介绍,我们还将为您解释angularjs过滤器的相关知识,同时,我们还将为您提供关于ActiveAdmin:另一个过滤器

本文将为您提供关于如何在angular.js中从另一个过滤器调用一个过滤器的详细介绍,我们还将为您解释angularjs 过滤器的相关知识,同时,我们还将为您提供关于ActiveAdmin:另一个过滤器更改时刷新过滤器选项、angularJs - $filter过滤器使用和自定义过滤器、angularjs – 为Angular JS中的对象变量指定一个过滤器、angularjs – 如何在angular2中的列表中应用搜索过滤器?的实用信息。

本文目录一览:

如何在angular.js中从另一个过滤器调用一个过滤器(angularjs 过滤器)

如何在angular.js中从另一个过滤器调用一个过滤器(angularjs 过滤器)

我有一个过滤器linkifyStuff,其中需要使用其他过滤器处理一些变量。我无法弄清楚从另一个调用一个过滤器的语法。

我了解过滤器链接-这不是我想要的。我想将过滤器应用于linkifyStuff过滤器中的局部变量,而不是其输入或输出。

我希望像下面这样工作,但是$ filter(’filtername’)显然不是正确的语法。

module.filter(''sanitizeStuff'', function() {    // ...})module.filter(''prettifyStuff'', function() {    // ...})module.filter(''linkifyStuff'', function($filter) {    return function(text) {        // ...        // ...        return $filter(''sanitizeStuff'')(foo) + '' whatever '' + $filter(''prettifyStuff'')(bar)    }})

我可以为sanitizeStuff和sanitizeStuff编写一个普通的js函数,然后从这些过滤器中调用该函数,但这似乎是错误的。关于如何以角度的方式做任何建议?

谢谢。

答案1

小编典典

将过滤器注入linkifyStuff使用<filterName>Filter语法。像这样:

app.filter(''linkifyStuff'', function(sanitizeStuffFilter,prettifyStuffFilter) {    return function(text) {        return sanitizeStuffFilter(text) + '' whatever '' + prettifyStuffFilter(text);    }});

演示

ActiveAdmin:另一个过滤器更改时刷新过滤器选项

ActiveAdmin:另一个过滤器更改时刷新过滤器选项

如何解决ActiveAdmin:另一个过滤器更改时刷新过滤器选项?

我真的很想尝试创建一个过滤器,该过滤器根据另一个过滤器的值动态更改其选项。

当公司过滤器更改时,我想刷新company_user过滤器以仅显示属于所选特定公司的用户。

我正在使用Rails 4。

ActiveAdmin ...
  filter :company,as: :select,collection: proc { Company.pluck(:name,:id) }
  filter :company_user,as: select,collection: proc { CompanyUser.pluck(:name,:id) }

我的模型如下:

class Company < ActiveRecord::Base
  has_many :company_users,inverse_of: :company,dependent: :destroy
end

class CompanyUser < ActiveRecord::Base
  belongs_to :company,inverse_of: company_users
end

提前谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

angularJs - $filter过滤器使用和自定义过滤器

angularJs - $filter过滤器使用和自定义过滤器

1.内置过滤器

$filter 过滤器,是angularJs中用来处理数据以更好的方式展示给我用户。比如格式化日期,转换大小写等等。
过滤器即有内置过滤器也支持自定义过滤器。内置过滤器很多,可以百度。关键是如何使用:
1.在HTML中直接使用内置过滤器
2.在js代码中使用内置过滤器
3.自定义过滤器
(1)常用内置过滤器
number 数字过滤器,可以设置保留数字小数点后几位等
date 时间格式化过滤器,可自己设置时间格式
filter 过滤的数据一般是数组,数组中的数据可以是对象,字符串等
orderBy 排序根据数组中某一个元素的属性排序等
lowercase 转换小写
uppercase 转换大写
limitTo 字符串剪切 使用格式{{被剪切的字符串|limitTo:数值}} 数值绝对值代表要切得字符个数,正代表从头开始切,负值相反。

2.自定义过滤器

定义格式:
模块名称.filter(‘过滤器名字’,function(){
return function(被过滤数据,条件1,条件2.。。。){//过滤操作
}});
套用上面的格式定义两个简单的自定义过滤器一个带条件的,一个不带条件的。
(1)【不带条件】 ,功能:固定转换(有时候项目中会遇到角色代号,门店编码什么的,但是显示的时候要显示对应中文,比如 字段code:101代表老板
这时候像这种code值比较多,那就用过滤器比较好。)
myApp.filter("ChangeCode",function(){
return(inputData){
varchanged="";
switch){
case'101':"老板";break;
'102'"经理";
'103'"员工";
}
;
}
});
完成,说一下使用场景(就这个过滤器的功能)和方式。
场景:服务器返回的数据中有个字段code,直接放标签里<div>{{data.code}}</div>,会显示code值而不是code值对应的职称,这时候就可以用这个专门
针对这个转换的自定义过滤器
使用方式:
(1)HTML中:<div>{{data.code | ChangeCode}}</div>//跟内置过滤器一样的方式
(2)js中:变量 = $filter("ChangeCode")(被过滤的code数据)//一样的调用方式

(2)【带条件】,功能过滤掉一组数组中某个字段值为某个值的数据,比如这里定义一个过滤掉所有年龄为某个值的过滤器。参数就是年龄
"deleteByAge"{
inputbyAgeage{
array[];
for(i=0;<length++){
if[][]!=){
push]);
}
}
;
}
})

处理一组数据的时候一般很少用在HTML当中,带条件的自定义过滤器是根据年龄值,也可以根据数组元素中的任意一个属性值进行删除过滤。
使用方式:变量 = $filter("deleteByAge")(数组,“属性名称”,属性值);

【总结内置过滤器的使用方式】
(1)在HTML中一般格式为: {{被过滤的数据 | 过滤器名称:条件1:条件2.。。。}} ;过滤条件之间用‘:’隔开.
(2)在代码中一般格式为: 变量 = $filter("过滤器名称")(被过滤数据,过滤条件1,过滤条件2,。。。。。。)

【自定义过滤器】
(1)定义格式:
model.filter(filterName,function(){
return function(参数1,参数2,参数3.。。。。参数N){
//过滤器处理部分
}
})
model:模块名称
filterName: 过滤器名称
参数1:被过滤的数据
参数2:一般为过滤条件,可以有多个,后面的参数3一直到参数N都是,根据需要添加。

转载自:http://blog.csdn.net/wjk_along/article/details/54863602

angularjs – 为Angular JS中的对象变量指定一个过滤器

angularjs – 为Angular JS中的对象变量指定一个过滤器

我有一个ng-repeat使用这样的过滤器:
#1
<divng-repeat="contest in contests | filter:{votingOver:true}">
    <contestreport></contestreport>
</div>

我想让客户能够过滤它,所以我已经将过滤器分配给这样的变量:

#2
<div ng-init="reportFilter = {votingOver:true}"></div>
<divng-repeat="contest in contests | filter:reportFilter">
    <contestreport></contestreport>
</div>

代码#1正在运行,但代码#2不行,我不知道为什么.

您是否也尝试包装ng-init
<div ng-init="(reportFilter = '{votingOver:true}')"></div>

但是,正如我在之前的评论中所述 – angularjs documentation表示在大多数情况下使用ngInit是一种不好的做法.因此,如果可能,这不应该是您的问题的解决方案.

你的#2代码实际上有效,请检查这个插件 – http://plnkr.co/edit/dBDyYPd3ZoUVdXngu52t?p=preview

//html
  <div ng-init="reportFilter = {votingOver:false}"></div>
<divng-repeat="contest in contests | filter:reportFilter">
  {{contest | json}}
</div>

  </div>

//js in controller
  $scope.contests = [
    {id:1,title:'1',votingOver:false},{id:2,title:'2',votingOver:true},{id:3,title:'3',votingOver:true}
    ];

angularjs – 如何在angular2中的列表中应用搜索过滤器?

angularjs – 如何在angular2中的列表中应用搜索过滤器?

我想在存储在数组中的数据列表上实现搜索过滤器,我想在数据表中应用与搜索相同的搜索过滤器.如下图所示.
但是那些字段(名称,地址等等)并不固定.

based on search textbox value apply filter on below data

我怎么能得到这个?

解决方法

DEMO

如果你想通过其他字段过滤,只需将它们添加到管道中:

import { Pipe,PipeTransform} from '@angular/core';

@Pipe({
    name: 'searchFilter'
})
export class SearchFilter implements PipeTransform {
    transform(items: any[],criteria: any): any {

        return items.filter(item =>{
           for (let key in item ) {
             if((""+item[key]).toLocaleLowerCase().includes(criteria.toLocaleLowerCase())){
                return true;
             }
           }
           return false;
        });
    }
}

    @Component({
      selector: 'sites-component',template: `
        <input #search  (keyup)="0">
        <ul>
          <li *ngFor="let site of (sites | searchFilter: search.value )">(...)</li>
        </ul>
      `
    })
    export class SitesComponent{
       sites : Array;
    }

别忘了在模块中声明管道.

今天关于如何在angular.js中从另一个过滤器调用一个过滤器angularjs 过滤器的介绍到此结束,谢谢您的阅读,有关ActiveAdmin:另一个过滤器更改时刷新过滤器选项、angularJs - $filter过滤器使用和自定义过滤器、angularjs – 为Angular JS中的对象变量指定一个过滤器、angularjs – 如何在angular2中的列表中应用搜索过滤器?等更多相关知识的信息可以在本站进行查询。

本文标签: