2013-09-26 2 views
1

Пример того, что я хотел бы быть в состоянии сделать:Создать фильтр произвольных свойств динамически

query.filter(function (person) { 
    return person[this.field] == this.value; 
}, { 
    field: 'FirstName', 
    value: 'Lea' 
}); 

Это вызывает исключение, как из JayData 1.3.2. Обратите внимание, что жесткое кодирование имени свойства с [] синтаксисом работает, как ожидалось (хотя и не полезно):

query.filter(function (person) { 
    return person['FirstName'] == this.value; 
}, { 
    value: 'Lea' 
}); 
  1. Возможен ли это без Eval() обмана?
  2. Если нет, есть ли альтернатива?

Примечание: Использование поставщика OData, если это имеет значение.

ответ

1

да, это не поддерживается query.filter() имеет альтернативный формат:

query.filter('it.something == this.something') 

так с некоторой строки CONCAT можно добиться того, что вы хотите

query.filter('it.'+field+' == this.value', { value: 'Lea'}) 
+0

Спасибо, что будет делать. – tne

+0

Как вы можете использовать вместо == –