Jika saya memiliki array objek, dan saya ingin mengikat model Angular ke properti salah satu elemen berdasarkan filter, bagaimana cara melakukannya? Saya bisa menjelaskan lebih baik dengan contoh konkret:
HTML:
<!DOCTYPE html>
<html ng-app>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body ng-controller="MyCtrl">
<input ng-model="results.year">
<input ng-model="results.subjects.title | filter:{grade:'C'}">
</body>
</html>
Pengontrol:
function MyCtrl($scope) {
$scope.results = {
year:2013,
subjects:[
{title:'English',grade:'A'},
{title:'Maths',grade:'A'},
{title:'Science',grade:'B'},
{title:'Geography',grade:'C'}
]
};
}
JSBin: http://jsbin.com/adisax/1/edit
Saya ingin memfilter input kedua ke subjek dengan nilai 'C', tetapi saya tidak ingin mengikat model ke nilai ; Saya ingin mengikatnya dengan judul mata pelajaran yang memiliki nilai 'C'.
Apakah ini mungkin, dan jika demikian, bagaimana melakukannya?
filter:{grade:'!'+'C'}
grade array
? Dalam kasus saya, saya membangun array nilai saya dari tampilan pohon dan ingin memfilter hasilnya untuk mereka yang ada di dalam array.Anda dapat menggunakan filter "filter" di pengontrol Anda untuk mendapatkan semua nilai "C". Mendapatkan elemen pertama dari larik hasil akan memberi Anda judul subjek yang memiliki nilai "C".
http://jsbin.com/ewitun/1/edit
Hal yang sama dengan ES6 biasa:
sumber
Berikut adalah JSBin yang dimodifikasi dengan contoh yang berfungsi:
http://jsbin.com/sezamuja/1/edit
Inilah yang saya lakukan dengan filter di masukan:
sumber
perlu diketahui, jika Anda menggunakan $ filter seperti ini:
dan Anda kebetulan memiliki nilai lain untuk, Oh saya tidak tahu, CC atau AC atau C + atau CCC itu menarik mereka ke. Anda perlu menambahkan persyaratan untuk pencocokan tepat:
Ini benar-benar membunuh saya ketika saya menarik beberapa detail komisi seperti ini:
hanya dipanggil karena bug karena menarik ID komisi 56 daripada 6.
Menambahkan kekuatan sebenarnya menjadi pencocokan tepat.
Namun tetap saja, saya lebih suka ini (saya menggunakan skrip jenis, maka "Let" dan =>):
Saya melakukan itu karena, pada suatu saat nanti, saya mungkin ingin mendapatkan lebih banyak info dari data yang difilter, dll ... memiliki fungsi tepat di sana seperti membiarkan tudung terbuka.
sumber
jika Anda ingin membuat daftar hasil yang terpisah di pengontrol, Anda dapat menerapkan filter
Kemudian Anda dapat mereferensikan FailSubjects dengan cara yang sama seperti Anda mereferensikan objek hasil
Anda dapat membaca lebih lanjut tentangnya di sini https://docs.angularjs.org/guide/filter
karena sudut jawaban ini telah memperbarui dokumentasi, mereka sekarang merekomendasikan untuk memanggil filter
sumber
Anda juga dapat menggunakan fungsi dengan
$filter('filter')
:sumber
Jika Anda menggunakan ES6, Anda dapat:
Juga perhatikan filter tidak memperbarui array yang ada itu akan mengembalikan array baru yang difilter setiap saat.
sumber
Menerapkan filter yang sama di HTML dengan banyak kolom, contoh saja:
sumber