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?

nh2
sumber

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>
nh2
sumber
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:

Bravo
sumber
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

shacharsol
sumber
1

seperti ini:

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

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

{{ value | decimalRound: 2 | currencySimbol: 'U$' }} 
// 11.1111 becomes U$ 11.11
Jonatas Marinho
sumber
kemungkinan rangkap: stackoverflow.com/questions/16227325/…
sjokkogutten
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]); 
Gajender Singh
sumber