2012-09-23 75 views
4

我有一個簡單的數組控制器在燼前1.0,並發現如果篩選器找到一個給定的屬性完全匹配,我可以砍下列表,但我看起來不像找到是如何做一個「喜歡」與過濾器的查詢。如何做一個像ember.js過濾器

如果我搜索與用戶的數組我有下面的作品...

filtered = ['id', 'username'].map(function(property) { 
    return self.get('content').filterProperty(property, filter); 
}); 

...和一些用戶具有相同的用戶名。例如=>如果我通過「smith」搜索/過濾它將返回兩個記錄,因爲「username」屬性與「smith」具有完全匹配

如何更改此映射函數以使用類似樣式查詢所以當我鍵入單詞「SM」它仍然認爲這兩種記錄

這裏是的jsfiddle顯示我在行動上面顯示過濾器http://jsfiddle.net/Rf3h8/

預先感謝您

回答

10

可以使用RegExp對象測試匹配的數據片段。由於您正在編寫自己的過濾邏輯,因此您必須使用filter函數。我更新了你的小提琴來完成這項工作:http://jsfiddle.net/Rf3h8/1/

你的小提琴包含很多代碼,可能很難讓其他人遵循。以下是使用RegExp過濾數組的一個非常簡單的例子。

var names = ['ryan', 'toran', 'steve', 'test']; 
var regex = new RegExp('ry'); 

var filtered = names.filter(function(person) { 
    return regex.test(person); 
}); 

filtered // => ['ryan'] 

事實上,你甚至可以重構這是

var filtered = names.filter(regex.test, regex); 
+0

真棒!謝謝(對於大型的jsfiddle感到抱歉 - 使用它總共有3個問題來解決我使用這個mixin的幾個問題) –

相關問題