Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Menapis Berbilang Nilai dalam AngularJS tanpa Eval()?

Bagaimana untuk Menapis Berbilang Nilai dalam AngularJS tanpa Eval()?

DDD
Lepaskan: 2024-11-02 19:24:03
asal
429 orang telah melayarinya

How to Filter for Multiple Values in AngularJS without Eval()?

Menapis Berbilang Nilai dalam AngularJS

AngularJS menyediakan ciri penapis yang berkuasa, tetapi penapisan untuk berbilang nilai menggunakan operator OR logik boleh menjadi rumit. Mari terokai cara menapis berbilang nilai secara dinamik tanpa menggunakan panggilan eval() yang berpotensi berbahaya.

Untuk mencapai penapisan berbilang nilai dinamik, kami mengesyorkan anda membuat penapis tersuai. Penapis mudah dibuat dan menyediakan cara yang selamat dan cekap untuk melanjutkan keupayaan penapisan AngularJS.

<code class="javascript">angular.module('myFilters', []).
  filter('bygenre', function() {
    return function(movies, genres) {
      var out = [];
      for (var i = 0; i < movies.length; i++) {
        var movie = movies[i];
        if (genres.indexOf(movie.genre) !== -1) {
          out.push(movie);
        }
      }
      return out;
    }
  });
Salin selepas log masuk

Penapis tersuai ini, bernama 'bygenre,' mengambil dua parameter: filem (data yang akan ditapis) dan genre (susunan genre untuk ditapis). Penapis menyemak setiap filem terhadap genre yang ditentukan dan mengembalikan tatasusunan baharu yang mengandungi hanya filem yang sepadan dengan mana-mana genre.

Dalam templat, kita boleh menggunakan penapis tersuai ini seperti:

<code class="html"><h1 ng-init="movies = [
          {title:'Man on the Moon', genre:'action'},
          {title:'Meet the Robinsons', genre:'family'},
          {title:'Sphere', genre:'action'}
       ];">Movies</h1>
<input type="checkbox" ng-model="genrefilters.action" />Action
<br />
<input type="checkbox" ng-model="genrefilters.family" />Family
<br />{{genrefilters.action}}::{{genrefilters.family}}
<ul>
    <li ng-repeat="movie in movies | bygenre:genrefilters">{{movie.title}}: {{movie.genre}}</li>
</ul></code>
Salin selepas log masuk

Templat ini mencipta kotak pilihan untuk setiap genre, membolehkan anda memilih genre untuk ditapis secara dinamik. Semasa anda menogol kotak pilihan, filem ditapis untuk memaparkan hanya yang sepadan dengan genre yang dipilih.

Pendekatan ini menyediakan cara yang fleksibel dan selamat untuk menapis data secara dinamik dalam AngularJS, membolehkan anda mencari berbilang nilai dengan mudah tanpa menjejaskan prestasi atau keselamatan.

Atas ialah kandungan terperinci Bagaimana untuk Menapis Berbilang Nilai dalam AngularJS tanpa Eval()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan