1. filter過濾器需要調用嗎
在AngularJS的世界裡,filter提供了一種格式化數據的方法,Angular也提供給我們了很多內建的過濾器,並且建立自定義過濾器也是相當的簡單
在HTML的模板綁定{{}}中,我們使用 | 來調用過濾器,比如,我們想讓字元串全部大寫字元顯示:
{{ name | uppercase }}
當然了,我們也可以在JavaScript中使用$filter服務來調用過濾器,還拿字元串大寫來舉例:
app.controller('DemoController', ['$scope', '$filter', function($scope, $filter) { $scope.name = $filter('lowercase')('Ari'); }]);
如何傳遞參數到filter呢?只需要把參數放在filter之後,中間加個冒號(如果有多個參數要傳遞,在每個參數後加上冒號)比如,數字過濾器可以幫助我們限制數字的位數,如果想顯示兩位小數,加上number:2就可以了
{{ 123.456789 | number:2 }}
filter過濾器主要用來過濾一個數組數據並返回一個包含子數組數據的新數組。
比如,在客戶端搜索時,我們可以快速的從數組中過濾出我們想要的結果。
這個filter方法接收一個string,object,或者function參數用來選擇/移除數組元素。
下滿我們具體來看:
一,內置的過濾器
1,uppercase,lowercase大小轉換
{{ "lower cap string" | uppercase }} //結果:LOWER CAP STRING {{ "TANK is GOOD" | lowercase }} //結果:tank is good
|這里的豎線是一種管道功能,如果對linux比較熟悉的話,這塊的|根linux的管道功能,基本是一樣的2,json格式化
{{ {foo: "bar", baz: 23} | json }} //結果:{ "foo": "bar", "baz": 23 }
注意:bza沒格式前是沒有雙引號的,格式化後就轉換成了json數據了。
3,date格式化
mysql時間戳 ng-bind="message.time * 1000 | date:'yyyy-mm-dd'"
{{ 1304375948024 | date:'medium'}} //May 03, 2011 06:39:08 PM {{ 1304375948024 | date }} //結果:May 3, 2011 {{ 1304375948024 | date:"MM/dd/yyyy @ h:mma" }} //結果:05/03/2011 @ 6:39AM {{ 1304375948024 | date:"yyyy-MM-dd hh:mm:ss" }} //結果:2011-05-03 06:39:08
4,number格式化
{{ 1.234567 | number:1 }} //結果:1.2 {{ 1234567 | number }} //結果:1,234,567
5,currency貨幣格式化
{{ 250 | currency }} //結果:$250.00 {{ 250 | currency:"RMB ¥ " }} //結果:RMB ¥ 250.00
6,filter查找 只能查value,不能查key
{{ [{"age": 20,"id": 10,"name": "iphone"}, {"age": 12,"id": 11,"name": "sunm xing"}, {"age": 44,"id": 12,"name": "test abc"} ] | filter:'s'}} //查找含有有s的行 //上例結果:[{"age":12,"id":11,"name":"sunm xing"},{"age":44,"id":12,"name":"test abc"}] {{ [{"age": 20,"id": 10,"name": "iphone"}, {"age": 12,"id": 11,"name": "sunm xing"}, {"age": 44,"id": 12,"name": "test abc"} ] | filter:{'name':'ip'} }} //查找name like ip的行 //上例結果:[{"age":20,"id":10,"name":"iphone"}] $filter('number')(30000, 2); var jsonString = $filter('json')({"age":12,"id":11,"name":"sunm xing"},{"age":44,"id":12,"name":"test abc"}])
7,limitTo字元串,對像的截取
{{ "i love tank" | limitTo:6 }} //結果:i love {{ "i love tank" | limitTo:-4 }} //結果:tank {{ [{"age": 20,"id": 10,"name": "iphone"}, {"age": 12,"id": 11,"name": "sunm xing"}, {"age": 44,"id": 12,"name": "test abc"} ] | limitTo:1 }} //結果:[{"age":20,"id":10,"name":"iphone"}]
8,orderBy對像排序
{{ [{"age": 20,"id": 10,"name": "iphone"}, {"age": 12,"id": 11,"name": "sunm xing"}, {"age": 44,"id": 12,"name": "test abc"} ] | orderBy:'id':true }} //根id降序排 {{ [{"age": 20,"id": 10,"name": "iphone"}, {"age": 12,"id": 11,"name": "sunm xing"}, {"age": 44,"id": 12,"name": "test abc"} ] | orderBy:'id' }} //根據id升序排 {{ [{"age": 20,"id": 10,"name": "iphone"}, {"age": 12,"id": 11,"name": "sunm xing"}, {"age": 44,"id": 12,"name": "test abc"} ] | orderBy:['-age','name'] }}
二,自定filter功能
filter的自定義方式也很簡單,使用mole的filter方法,返回一個函數,該函數接收輸入值,並返回處理後的結果。
app.filter('過濾器名稱',function(){ return function(需要過濾的對象,過濾器參數1,過濾器參數2,...){ //...做一些事情 return 處理後的對象; } });
我找了一個基本angularjs的mvc框架,phonecat,自定義filter也是在這基礎寫的,這個框架挺好用的。
filters.js添加一個mole
angular.mole('tanktest', []).filter('tankreplace', function() { return function(input) { return input.replace(/tank/, "=====") }; });
html中調用
{{ "TANK is GOOD" | lowercase |tankreplace}} //結果:===== is good
注意:| lowercase |tankreplace管道命令可以有多個
yourApp.filter('orderObjectBy', function() { return function(items, field, reverse) { var filtered = []; angular.forEach(items, function(item) { filtered.push(item); }); filtered.sort(function (a, b) { return (a[field] > b[field] ? 1 : -1); }); if(reverse) filtered.reverse(); return filtered; }; });
該過濾器將對象轉換成標準的數組並把它通過您指定欄位排序。您可以使用orderObjectBy過濾器酷似ORDERBY,包括欄位名後一個布爾值,以指定的順序是否應該得到扭轉。換句話說,假的是升序,真正的下降。html調用
<li ng-repeat="item in items | orderObjectBy:'color':true">{{ item.color }}</li>
排序搜索
<input type="text" ng-model="search" class="form-control" placeholder="Search"> <thead> <tr> <!-- ng-class="{dropup:true}" --> <th ng-click="changeOrder('id')" ng-class="{dropup: order === ''}"> 產品編號 <span ng-class="{orderColor: orderType === 'id'}" class="caret"></span> </th> <th ng-click="changeOrder('name')" ng-class="{dropup: order === ''}"> 產品名稱 <span ng-class="{orderColor: orderType === 'name'}" class="caret"></span> </th> <th ng-click="changeOrder('price')" ng-class="{dropup: order === ''}"> 產品價格 <span ng-class="{orderColor: orderType === 'price'}" class="caret"></span> </th> </tr> </thead> <tbody> <tr ng-repeat="item in proctData | filter: search | orderBy:order + orderType"> <td>{{item.id}}</td> <td>{{item.name}}</td> <td>{{item.price | currency: '¥'}}</td> </tr> </tbody>
angularjs
//默認排序欄位 $scope.orderType = 'id'; $scope.order = '-'; $scope.changeOrder = function(type) { console.log(type); $scope.orderType = type; if ($scope.order === '') { $scope.order = '-'; }else{ $scope.order = ''; } }
2. cad的filter過濾命令具體怎麼用的
舉例說明,首先設定過濾條件,有兩種方式,一是在窗體中的下拉表格中選取設置回,另一是先擇圖形對象答,我就講第二種吧,比較快,比如我想選擇圖中所有內容為1234ABCD的A_N_PUB_TEXT圖層的文字,無論它使用了什麼字體,字高多少。命令FILTER,
點擊應用後,就會回到圖形中,框選所有對象(這一例中,可以先用LAYISO命令隔離出A_N_PUB_TEXT圖層的對象),選擇後,符合這三個條件的對象就處於當前選擇集中,可以直接輸入其它命令進行下一步操作了。
3. 如何創建過濾器Filter
建立一個過濾器涉及下列五個步驟: 1、建立一個實現Filter介面的類。這個類需要三個方法,分別是:doFilter、init和destroy。doFilter方法包含主要的過濾代碼,init方法建立設置操作,而destroy方法進行清楚。 2、在doFilter方法中放入過濾行為。doFilter方法的第一個參數為ServletRequest對象。此對象給過濾器提供了對進入的信息(包括表單數據、cookie和HTTP請求頭)的完全訪問。第二個參數為ServletResponse,通常在簡單的過濾器中忽略此參數。最後一個參數為FilterChain,如下一步所述,此參數用來調用servlet或JSP頁。 3、調用FilterChain對象的doFilter方法。Filter介面的doFilter方法取一個FilterChain對象作為它的一個參數。在調用此對象的doFilter方法時,激活下一個相關的過濾器。如果沒有另一個過濾器與servlet或JSP頁面關聯,則servlet或JSP頁面被激活。 4、對相應的servlet和JSP頁面注冊過濾器。在部署描述符文件(web.xml)中使用filter和filter-mapping元素。 5、禁用激活器servlet。防止用戶利用預設servlet URL繞過過濾器設置。doFilter方法: public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException{HttpServletRequest req = (HttpServletRequest)request; System.out.println(req.getRemoteHost() + " tried to access " +req.getRequestURL() +" on " + new Date() + "."); chain.doFilter(request,response); }在web.xml中進行部署 分別是:filter和filter-mapping。filter元素向系統注冊一個過濾對象,filter-mapping元素指定該過濾對象所應用的URL。 1.filter元素 filter元素位於部署描述符文件(web.xml)的前部,所有filter-mapping、servlet或servlet-mapping元素之前。filter元素具有如下六個可能的子元素: :icon 這是一個可選的元素,它聲明IDE能夠使用的一個圖象文件。 :filter-name 這是一個必需的元素,它給過濾器分配一個選定的名字。 :display-name 這是一個可選的元素,它給出IDE使用的短名稱。 :description 這也是一個可選的元素,它給出IDE的信息,提供文本文檔。 :filter-class 這是一個必需的元素,它指定過濾器實現類的完全限定名。 :init-param 這是一個可選的元素,它定義可利用FilterConfig的getInitParameter方法讀取的初始化參數。單個過濾器元素可包含多個init-param元素。2.filter-mapping元素 filter-mapping元素位於web.xml文件中filter元素之後serlvet元素之前。它包含如下三個可能的子元素:: :filter-name 這個必需的元素必須與用filter元素聲明時給予過濾器的名稱相匹配。 :url-pattern 此元素聲明一個以斜杠(/)開始的模式,它指定過濾器應用的URL。所有filter-mapping元素中必須提供url-pattern或servlet-name。但不能對單個filter-mapping元素提供多個url-pattern元素項。如果希望過濾器適用於多個模式,可重復整個filter-mapping元素。 :servlet-name 此元素給出一個名稱,此名稱必須與利用servlet元素給予servlet或JSP頁面的名稱相匹配。不能給單個filter-mapping元素提供多個servlet-name元素項。
4. filter的使用 java 過濾器的幾種使用方法
過濾器來
過濾器是處於客戶端自與伺服器資源文件之間的一道過濾網,在訪問資源文件之前,通過一系列的過濾器對請求進行修改、判斷等,把不符合規則的請求在中途攔截或修改。也可以對響應進行過濾,攔截或修改響應。
過濾器一般用於登錄許可權驗證、資源訪問許可權控制、敏感詞彙過濾、字元編碼轉換等等操作,便於代碼重用,不必每個servlet中還要進行相應的操作。
5. CAD中的filter命令到底怎麼用選擇項里有好多內容,都代表什麼意思,能不能用例子解釋呢
這個我做過這方面的圖 建議 你可以分圖層了進行做 這樣可能會方便下 隱藏不需要的圖層就可以了
6. AutoCAD快速選擇利器——Filter基礎篇
記得曾經接收了一幅地形圖,居然計曲線和首曲線粗細相同,想將計曲線加粗方便出版,但一檢查,十分郁悶,計曲線和首曲線顏色相同、圖層相同,不能區分。用Filter進行快速過濾的想法破滅了,手工一根根改,費時費力,不討好也不甘心,這時經過仔細思考,等高線與等高線之間的唯一的差異是高程,巧用Filter很快就解決了。先不說解決方法,讓我們先掌握Filter命令的用法。估計能將該功能運用得爐火純青的同仁不多,而該功能應用廣泛,在這里進行詳細介紹。要提高工作效率,必須將常用功能了如指掌。
AutoCAD的Filter命令為 對象選擇過濾器 。顧名思義,該功能為根據過濾條件來選擇對象。只要是AutoCAD支持的屬性不同的對象,都可以用Filter進行過濾,為下一步的操作提供基礎。
界面頂部窗口為過濾器內容。構建(添加)對象選擇過濾器內容有兩種方式:
1、通過「添加選定對象」按鈕選擇對象,系統將該對象的屬性加入到過濾器,然後對過濾器進行「編輯項目」(見後面介紹)或」刪除」;
2、直接通過「選擇過濾器」選擇,然後「添加到列表」來構建過濾器;
界面中的過濾器就是通過選擇了一條230m的等高線,將其他屬性刪除後剩下的屬性。作用就是過濾當前圖中所有在DGX層上、顏色為綠色、高程為230m的多段線(等高線)。
常用的過濾條件分為三類:
- 實體對象 ,如直線、多段線、圓、圓弧、塊、文字、屬性、標注和圖像等。
- 實體一般屬性 ,如圖層、顏色、線型、線型比例、透明度和厚度等。
- 實體專有屬性 ,如圓半徑、圓弧半徑、塊名、文字樣式名、標注樣式、填充圖案名、字高和標高等。
可以根據情況進行組合過濾需要的對象選擇集。同時也提醒一下,在繪制圖形時,有意識的進行區分以便日後過濾選擇,完成相關操作。
過濾器編輯包含 編輯項目 、 刪除 、 清除列表 三個功能。
1、 編輯項目 :可以編輯過濾器中的內容。
⑴當游標停留在對象行時,顯示藍色,在點擊 編輯項目 ,這時,界面無變化。可以直接在選擇過濾器中的下拉列表選擇對象,「添加到列表」或「替換」當前行,即「添加到列表」在當前行增加一行,當前行下移一行,「替換」的話,將當前選擇或編輯內容替換當前行;
⑵當游標停留在圖層行時,點擊 編輯項目 ,選擇過濾器中的下拉列表自動變為「圖層」,「選擇」按鈕、「X="後的文本框同時點亮;點擊進入,出現「選擇圖層」界面,列表中顯示當前圖形所有圖層,可以選擇其一替換DGX,如選擇GCD,這時「X="後的文本框值由DGX改為GCD;當然也可以直接修改DGX為GCD是同樣的效果。修改完之後,根據需要「添加到列表」或「替換」當前行,圖層修改完成。
⑶當游標停留在顏色行時,點擊 編輯項目 ,其過程與圖層完全類似。
⑷當游標停留在標高行時,點擊 編輯項目 ,「X="後的文本框同時點亮,可以直接編輯該文本框,修改完之後,根據需要「添加到列表」或「替換」當前行,標高修改完成。
2、 刪除 :就是將當前游標所在行信息從過濾器刪除;
3、 清除列表 :就是一次刪除過濾器內容,將過濾器清空。
用界面中的例子介紹了對象過濾器的編輯方法。
過濾器構建之後,若未 應用 過,則下次打開界面,過濾器內容丟失。
過濾器構建之後,若 應用 過,則下次打開界面,過濾器內容仍然存在;但在其他圖形文件不能看到該過濾器內容;當下次啟動AutoCAD,則過濾器內容丟失。這說明過濾器內容只保存在當前圖形的內存空間。
若想過濾器內容在AutoCAD重啟後或其他文件中能夠重復使用,必須保存下來。
當前 :列表框顯示當前過濾器的名字,下拉列表顯示AutoCAD所有過濾器名稱。
另存為 :文本框輸入過濾器名字,點擊「另存為」按鈕,過濾器保存,名字在過濾器名稱列表,並作為「當前」顯示;
刪除當前過濾器列表 :刪除當前過濾器,顯示過濾器列表下一項內容。
7. 過濾器Filter
過濾器是 Servlet 的高級特性之一,是實現了 Filter 介面的 Java。 過濾器位於瀏覽器與伺服器端之間,充當濾網的作用,過濾或處理一些不恰當的請求 。
過濾器的用處: 過濾敏感字元串、避免中文亂碼、許可權驗證(規定只帶有Session或Cookie的用戶才能訪問)等等;
所有實現了 Filter 介面的類都稱為過濾器。過濾器必須實現 Filter 下的三個方法:
其中, doFilter() 方法有三個參數 ServletRequest、ServletResponse 和 FilterChain,FilterChain 參數用於調用後續的過濾器,如果不存在過濾器,則訪問目標資源;
web.xml中配置
應用順序是指 根據請求地址執行對應的過濾器的順序 。執行攔截一個請求的過濾器是根據 web.xml中 <filter-mapping> 順序從上往下執行,而且是嵌套執行的。
一個請求中,如果需要經過多個過濾器,其請求和響應的過程如下圖所示
8. 在Photoshop界面打開的圖片,有時打不開「Filter」各種過濾器,怎麼辦
1、首先,在Photoshop中打開圖抄像,點擊「過濾器」按鈕,選擇「轉換為智能過濾器」,如下圖所示,然後進入下一步。