Javascript where筛选器键中的Backbonejs变量

Javascript where筛选器键中的Backbonejs变量,javascript,backbone.js,Javascript,Backbone.js,只是想知道是否有人知道为什么我不能在一个“where”中同时获得两个键/值以实现动态?我可以通过一个变量来计算值,这个变量工作得很好,但我似乎根本无法获得运行变量的关键 我的小提琴在这里:我正在努力工作的代码如下 我是个新手,所以有可能这是你不能做的事情,我只是还不知道 var newCollection = function(myCollection,prop,val){ alert('myprop: ' + prop); alert('val: ' + val); var results

只是想知道是否有人知道为什么我不能在一个“where”中同时获得两个键/值以实现动态?我可以通过一个变量来计算值,这个变量工作得很好,但我似乎根本无法获得运行变量的关键

我的小提琴在这里:我正在努力工作的代码如下

我是个新手,所以有可能这是你不能做的事情,我只是还不知道

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

});

var filteredCollection = new Backbone.Collection(results);

var newMatchesModelView = new MatchesModelView({collection: filteredCollection });

$("#allMatches").html(newMatchesModelView.render().el);

}

感谢您的时间

您的代码无法工作,因为键“prop”总是被逐字解释为字符串。因此,您可以通过
{“prop”:val}
进行搜索,而不是通过
{“location”:val}
进行搜索。有两种方法可以解决这个问题

1. 2.
您的代码不起作用,因为键“prop”总是被逐字解释为字符串。因此,您可以通过
{“prop”:val}
进行搜索,而不是通过
{“location”:val}
进行搜索。有两种方法可以解决这个问题

1. 2.
有几种方法可以做到这一点,最简单的方法是创建一个占位符对象,并指定键和值:

var query = {};
query[prop] = val;
var results = myCollection.where(query);
或者,如果这太冗长,并且您只需要很少的开销就可以了,那么您可以使用
\uuu.object

 var results = myCollection.where(_.object([prop], [val]);

有几种方法可以做到这一点,最简单的方法是创建一个占位符对象,并指定键和值:

var query = {};
query[prop] = val;
var results = myCollection.where(query);
或者,如果这太冗长,并且您只需要很少的开销就可以了,那么您可以使用
\uuu.object

 var results = myCollection.where(_.object([prop], [val]);