Làm cách nào để gọi bộ lọc Angular.js có nhiều đối số?


297

Từ tài liệu này , chúng tôi có thể gọi một bộ lọc như ngày như thế này:

{{ myDateInScope | date: 'yyyy-MM-dd' }}

Ở đây ngày là một bộ lọc có một đối số.

Cú pháp để gọi các bộ lọc có nhiều tham số hơn cả từ mẫu và từ mã JavaScript là gì?

Câu trả lời:


621

Trong các mẫu, bạn có thể tách các đối số bộ lọc bằng dấu hai chấm .

{{ yourExpression | yourFilter: arg1:arg2:... }}

Từ Javascript, bạn gọi nó là

$filter('yourFilter')(yourExpression, arg1, arg2, ...)

Thực sự có một ví dụ ẩn trong các tài liệu bộ lọc orderBy .


Thí dụ:

Giả sử bạn tạo một bộ lọc có thể thay thế mọi thứ bằng các biểu thức thông thường:

myApp.filter("regexReplace", function() { // register new filter

  return function(input, searchRegex, replaceRegex) { // filter arguments

    return input.replace(RegExp(searchRegex), replaceRegex); // implementation

  };
});

Yêu cầu trong một mẫu để kiểm duyệt tất cả các chữ số:

<p>{{ myText | regexReplace: '[0-9]':'X' }}</p>

4
Trong liên kết mẫu HTML {{filter_expression | bộ lọc: biểu thức: bộ so sánh}}, Trong bộ lọc $ JavaScript ('bộ lọc') (bộ lọc_expression, biểu thức, bộ so sánh)
Roman Sklyarov

@pulkitsinghal nghĩa là gì? Hiển thị mã có vấn đề của bạn trong JSFiddle hoặc Plunker.
Roman Sklyarov

Sẽ thật tuyệt nếu bạn chỉ đăng bộ lọc trong Javascript
Obi

1
@ObiOnuorah OK, chỉ cần dịch Coffeescript sang Javascript.
nh2

1
Đồ tốt. Tại sao câu trả lời này không đứng đầu danh sách?
thethakuri

11

tôi đã đề cập ở bên dưới, nơi tôi cũng đã đề cập đến bộ lọc tùy chỉnh, làm thế nào để gọi các bộ lọc này có hai tham số

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;
    }
});

và từ html bằng cách sử dụng mẫu, chúng ta có thể gọi bộ lọc đó như bên dưới

<h1>{{inputString| reverse:true }}</h1>

ở đây nếu bạn thấy, tham số đầu tiên là inputString và tham số thứ hai là true được kết hợp với "Reverse" bằng ký hiệu:


4

Nếu bạn muốn gọi bộ lọc của mình bên trong tùy chọn ng, mã sẽ như sau:

ng-options="productSize as ( productSize | sizeWithPrice: product )  for productSize in productSizes track by productSize.id"

trong đó bộ lọc là sizeWithpriceFilter và nó có hai tham số sản phẩm và kích thước sản phẩm


1

như thế này:

var items = $filter('filter')(array, {Column1:false,Column2:'Pending'});

0

Nếu bạn cần hai hoặc nhiều giao dịch với bộ lọc, có thể xâu chuỗi chúng:

{{ value | decimalRound: 2 | currencySimbol: 'U$' }} 
// 11.1111 becomes U$ 11.11


1
Không giải quyết câu hỏi "Làm cách nào để tôi gọi bộ lọc Angular.js với nhiều đối số?" (thay vì "Làm cách nào để tôi gọi nhiều bộ lọc?")
rom99

-1

Trong mã này, jsondata là mảng của chúng tôi và trong hàm trả về, chúng tôi đang kiểm tra 'phiên bản' có trong 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]); 
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.