带有OR条件的骨干集合where子句

时间:2013-01-08 04:06:02

标签: javascript backbone.js backbone-collections

我已经搜索了很长一段时间,但无法找到一个方法来使用where子句或条件。例如,如果我有一个集合Cars,我会尝试执行以下操作:

Cars.where({
            model: 1998,
            color: 'Black',
            make: 'Honda' 
          })

那么以上内容将会搜索car model1998colorBlackmakeHonda的{​​{1}} {1}}。

但是我需要一种方法来获得cars,其中三个条件中的任何一个都是真的。

2 个答案:

答案 0 :(得分:11)

Cars.filter(function(car) {
    return car.get("model") === 1998 ||
        car.get("color") === "Black" ||
        car.get("make") === "Honda";
});

答案 1 :(得分:0)

我知道这是一篇旧帖子,但也许这对某些人有用。

我有类似的问题,但有点简单,这就是我解决的问题

var ids=[1,2,3,4];
var plans=this.collection.filter(function(plan){
            var rt=false;
            for(var i=0;i<this.whereOR.length;i++){
                rt=rt||plan.get('id')==this.whereOR[i];
            }
            return rt;
        },{whereOR:ids});

我认为这可以用来解决这样提出的问题:

var search={model: 1998,color: 'Black',make: 'Honda'};
Cars.filter(function(car){
                var rt=false;

                for(key in this.whereOR) {
                    rt=rt||car.get(key)==this.whereOR[key];
                }
                return rt;
            },{whereOR:search});)

希望这能有所帮助!