Bagaimana cara saya memanggil filter Angular.js dengan banyak argumen?


297

Seperti dari dokumentasi , kita dapat memanggil filter seperti tanggal seperti ini:

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

Tanggal di sini adalah filter yang mengambil satu argumen.

Apa sintaksis untuk memanggil filter dengan lebih banyak parameter dari templat dan dari kode JavaScript?

Jawaban:


621

Di template, Anda dapat memisahkan argumen filter dengan titik dua .

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

Dari Javascript, Anda menyebutnya sebagai

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

Sebenarnya ada contoh yang disembunyikan di dokumen orderBy filter.


Contoh:

Katakanlah Anda membuat filter yang dapat menggantikan sesuatu dengan ekspresi reguler:

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

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

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

  };
});

Doa dalam template untuk menyensor semua digit:

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

4
Di Binding Template HTML {{filter_expression | filter: ekspresi: pembanding}}, Dalam JavaScript $ filter ('filter') (filter_expression, ekspresi, pembanding)
Roman Sklyarov

@pulkitsinghal apa maksudmu? Tampilkan kode bermasalah Anda di JSFiddle atau Plunker.
Roman Sklyarov

Akan lebih baik jika Anda hanya memposting filter dalam Javascript
Obi

1
@ObiOnuorah OK, baru saja menerjemahkan Coffeescript ke Javascript.
nh2

1
Barang bagus. Mengapa jawaban ini tidak ada di daftar teratas?
thethakuri

11

saya sebutkan di bawah ini di mana saya telah menyebutkan filter kustom juga, bagaimana memanggil filter ini yang memiliki dua parameter

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

dan dari html menggunakan templat kita dapat memanggil filter itu seperti di bawah ini

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

di sini jika Anda lihat, parameter pertama adalah inputString dan parameter kedua adalah true yang dikombinasikan dengan "reverse 'menggunakan simbol:


4

Jika Anda ingin memanggil filter Anda di dalam opsi-ng, kodenya adalah sebagai berikut:

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

di mana filter adalah sizeWithPriceFilter dan memiliki dua parameter produk dan ukuran produk


1

seperti ini:

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

0

Jika Anda membutuhkan dua atau lebih transaksi dengan filter, dimungkinkan untuk menghubungkannya:

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


1
Tidak menjawab pertanyaan "Bagaimana cara saya memanggil filter Angular.js dengan banyak argumen?" (daripada "Bagaimana saya memanggil beberapa filter?")
rom99

-1

Dalam kode ini, jsondata adalah larik kami dan dalam fungsi kembali kami memeriksa 'versi' yang ada di 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]); 
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.