2015-06-04 32 views
0

我正在创建一个过滤输入,其中根据keyUp提供结果。这是我在做什么过滤,通过骨干的集合:按子串过滤错误结果

var Brand = Backbone.Model; 

var Brands = Backbone.Collection.extend({ 
    model: Brand, 
    filterByName: function() { 
     return this.filter(function (model) { 
      return model.get('name').indexOf('h') > -1; 
     }); 
    } 
}); 

var fiat = new Brand ({ name: 'Fiat' }); 
var honda = new Brand ({ name: 'Honda' }); 
var chevrolet = new Brand ({ name: 'Chevrolet' }); 
var peugeot = new Brand ({ name: 'Peugeot' }); 
var mitsubishi = new Brand ({ name: 'Mitsubishi' }); 
var hyundai = new Brand ({ name: 'Hyundai' }); 

var brands = new Brands ([ fiat, honda, chevrolet, peugeot, mitsubishi, hyundai ]); 

console.log(brands.filterByName()); 

游乐场:http://jsfiddle.net/Lgcb0skm/

的一点是:当我输入h,例如,它带给我的只有Mitsubis h i and C h evrolet,而不是所有可能的结果,如H ondaH yundai等等为什么?建议?

+1

'获得( '名称')toLowerCase()的indexOf( 'H')> -1' – andlrc

+0

请。把你的评论变成接受的答案。我太笨,哈哈。 –

回答

1

简答'H' != 'h'。您将需要降低的情况下你的文本字符串,如果你想要做的不区分大小写的匹配:

return this.filter(function (model) { 
    return model.get('name').toLowerCase().indexOf('h') > -1; 
}); 
1

尝试使用这样的:

return model.get('name').toLowerCase().indexOf('h') > -1;