Was doing some filtering on a collection and came across a problem where I wanted to have a variable as the key in ‘where’ but it wouldn’t take and I wasn’t sure why. Stack Overflow to the rescue! http://stackoverflow.com/questions/27732629/backbonejs-variable-in-a-where-filter-key/27732713 So it turns out that it doesn’t work because the key “prop” is always interpreted literally, as a string (and no property in my collection is ‘prop’). So to get around it you use something like this instead of using what I was originally doing:
var newCollection = function(myCollection,prop,val){ alert('myprop: ' + prop); alert('val: ' + val); var results = myCollection.where({ //prop: val this doesn't work even if I put a string above it to make sure the value coming through is fine //prop: "Glasnevin" //this doesn't work "location" : val //this works });
Instead you use:
var results = myCollection.where(_.object([prop], [val]));
or alternatively (as also suggested by the kind people on stackoverflow)
var where = {}; where[prop] = val; var results = myCollection.where(where);
One to keep in the back pocket I suspect!