angularjs - Filter model on multiple fields inside controller -


i have model $scope.cases contains list of cases in format:

{     "dailyeventcaseid": 0,     "locid": "la ",     "courtroom": "9",     "caseid": 0,     "eventdate": "2015-09-14t00:00:00",     "displaytime": "08:30 am",     "sorttime": "08:30",     "seqnumber": null,     "statusid": null,     "case": {       "caseid": 0,       "casenumber": "bp120669",       "divisioncode": "pr",       "district": "la ",       "casetitle": "meschuk, john & walburga - trust (5/10/1989)"     },     "status": null,     "events": [       {         "eventid": 0,         "dailyeventcaseid": 0,         "entitynumber": "0051",         "eventname": "instructions",         "dailyeventcase": null       },       {         "eventid": 0,         "dailyeventcaseid": 0,         "entitynumber": "0052",         "eventname": "instructions",         "dailyeventcase": null       },       {         "eventid": 0,         "dailyeventcaseid": 0,         "entitynumber": "0053",         "eventname": "amended-removal of trustee",         "dailyeventcase": null       }     ]   } 

there multiple records inside model. unfortunately service saves both seqnumber , status written in way requires me return entire object can saved in database table. doing creating function accepts 3 parameters: caseid, casenum, , myeventdate. want filter model based on values of casenum, , myeventdate (which me down 1 object). way can pass object service , have save happen.

i have tried following:

$scope.filteredcase = $filter('custom')($scope.cases, { "case.casenumber": casenum, "eventdate": myeventdate }); 

i have injected filter service:

jbenchapp.controller('caselistctrl', ['$scope', '$http', 'holdstate', '$filter',    function ($scope, $http, holdstate, $filter) { 

however, unable because when include "case.casenumber" in search criteria no results , when remove results match "eventdate" requested. unfortunately, casenumber buried level deeper. how reference in filter?

in $filter there $ wildcard can use match properties deeper first level.

personally find easier write own cases using array.prototype.filter()

$scope.filteredcase = $scope.cases.filter(function(case){     var iscasematch = casenum ? case.casenumber === casenum : true,         isdatematch = myeventdate ? case.eventdate === myeventdate : true;          return iscasematch  && isdatematch ;     }); 

i making assumption myeventdate string...adjust accordingly. absolute matching using ===. partial matching use indexof()

many people use library lodash or underscore these sorts of operations


Comments