คำตอบ:
ในแม่แบบที่คุณสามารถแยกการขัดแย้งกรองตามทวิภาค
{{ yourExpression | yourFilter: arg1:arg2:... }}
จาก Javascript คุณเรียกมันว่า
$filter('yourFilter')(yourExpression, arg1, arg2, ...)
จริงๆแล้วมีตัวอย่างที่ซ่อนอยู่ในเอกสารตัวกรองorderBy
ตัวอย่าง:
สมมติว่าคุณสร้างตัวกรองที่สามารถแทนที่สิ่งต่างๆด้วยนิพจน์ทั่วไป:
myApp.filter("regexReplace", function() { // register new filter
return function(input, searchRegex, replaceRegex) { // filter arguments
return input.replace(RegExp(searchRegex), replaceRegex); // implementation
};
});
ภาวนาในเทมเพลตเพื่อตรวจสอบตัวเลขทั้งหมด:
<p>{{ myText | regexReplace: '[0-9]':'X' }}</p>
ฉันพูดถึงในด้านล่างที่ฉันได้กล่าวถึงตัวกรองที่กำหนดเองยังวิธีการเรียกตัวกรองเหล่านี้ซึ่งมีสองพารามิเตอร์
countryApp.filter('reverse', function() {
return function(input, uppercase) {
var out = '';
for (var i = 0; i < input.length; i++) {
out = input.charAt(i) + out;
}
if (uppercase) {
out = out.toUpperCase();
}
return out;
}
});
และจาก html โดยใช้เทมเพลตเราสามารถเรียกใช้ตัวกรองดังกล่าวได้ด้านล่าง
<h1>{{inputString| reverse:true }}</h1>
ที่นี่หากคุณเห็นพารามิเตอร์แรกคือ inputString และพารามิเตอร์ที่สองเป็นจริงซึ่งรวมกับ "ย้อนกลับ" โดยใช้สัญลักษณ์:
หากคุณต้องการเรียกตัวกรองของคุณภายใน ng-options รหัสจะเป็นดังนี้:
ng-options="productSize as ( productSize | sizeWithPrice: product ) for productSize in productSizes track by productSize.id"
โดยที่ตัวกรองคือขนาดด้วยราคาตัวกรองและมีสองพารามิเตอร์ผลิตภัณฑ์และขนาดผลิตภัณฑ์
แบบนี้:
var items = $filter('filter')(array, {Column1:false,Column2:'Pending'});
หากคุณต้องการการติดต่ออย่างน้อยสองครั้งกับตัวกรองเป็นไปได้ที่จะโยงพวกเขา:
{{ value | decimalRound: 2 | currencySimbol: 'U$' }}
// 11.1111 becomes U$ 11.11
ในรหัสนี้ jsondata เป็นอาร์เรย์ของเราและในการส่งคืนฟังก์ชั่นเรากำลังตรวจสอบ 'รุ่น' ปัจจุบันใน jsondata
var as = $filter('filter')(jsondata, function (n,jsondata){
return n.filter.version==='V.0.3'
});
console.log("name is " + as[0].name+as[0]);