where 过滤键中的 Backbonejs 变量
Backbonejs variable in a where filter key
只是想知道是否有人知道为什么我不能让 'where' 中的两个 key/values 成为动态的?我可以通过一个变量来计算值,效果很好,但我似乎根本无法获得运行变量的密钥。
我的 fiddle 在这里:http://jsfiddle.net/leapin_leprechaun/eyw6295q/ 下面是我正在尝试运行的代码。
我是 backbone 的新手,所以这可能是您无法做到的,我还不知道!
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
var where = {};
where[prop] = val;
var results = myCollection.where(where);
2
var results = myCollection.where(_.object([prop], [val]));
有几种方法可以做到这一点,最简单的就是创建一个占位符对象,然后分配键和值:
var query = {};
query[prop] = val;
var results = myCollection.where(query);
或者,如果这太冗长并且您可以 非常 少量的开销,您可以使用 _.object
var results = myCollection.where(_.object([prop], [val]);
只是想知道是否有人知道为什么我不能让 'where' 中的两个 key/values 成为动态的?我可以通过一个变量来计算值,效果很好,但我似乎根本无法获得运行变量的密钥。
我的 fiddle 在这里:http://jsfiddle.net/leapin_leprechaun/eyw6295q/ 下面是我正在尝试运行的代码。
我是 backbone 的新手,所以这可能是您无法做到的,我还不知道!
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
var where = {};
where[prop] = val;
var results = myCollection.where(where);
2
var results = myCollection.where(_.object([prop], [val]));
有几种方法可以做到这一点,最简单的就是创建一个占位符对象,然后分配键和值:
var query = {};
query[prop] = val;
var results = myCollection.where(query);
或者,如果这太冗长并且您可以 非常 少量的开销,您可以使用 _.object
var results = myCollection.where(_.object([prop], [val]);