2015-05-11 2 views
0

Возможно, это просто ошибка мозга на моей стороне, но я действительно смутился уже много дней.Ember Data: (лучшая практика) Динамический параметр для find()

У меня есть формулы поиска с большим количеством настраиваемых параметров переодевания, как это:

ID, имя, фамилия, date1,

Там нет иерархического порядка этих параметров, пользователь может настроить их в и формы.

Углеродный способ для queryparameter: {ID: ..., lastname: ..., date1: ...}, но что я могу сделать, если я не знаю, какие параметры могут стоять? Существуют различные модули в нашем приложении от 10 до 40 параметров, настраиваемых ...

Мне нужна помощь, чтобы найти «наилучшую практику» для решения этой проблемы. Я был бы рад, если бы кто-то мог мне помочь, как это решить!

С наилучшими пожеланиями, Ян

ответ

0

Если я вас правильно понял, вы хотите, чтобы найти многоразовое решение не сделать огромный список if с для различных параметров запроса для @store.find.

Чтобы сделать его многоразовым, вы можете остаться с одной находкой следующим образом:

this.store.find('myModel', queryHash) 

И строить queryHash перед вызовом. Например, вы можете установить набор флажков и вычисленное свойство, основанное на всех значениях флажков. Это вычисленное свойство будет строить свой хеш-функции, например:

queryHash: Ember.computed "lastName", "date1", function() { 
    query = {} 
    if(this.get("lastName")) { query.lastName = this.get("lastName"); } 
    if(this.get("date1")) { query.date1 = this.get("date1"); } 
    query 
}); 

Недостаток заключается в том, что вы должны знать все возможные варианты, которые доступны (но не должны быть проверены) в текущем маршруте для пользователя (например, с помощью какие-то входы или форма).

С другой стороны, если вы не можете сказать, что такое имена (или сколько из них есть), вы можете по крайней мере удерживать все данные, предоставленные пользователем, в каком-то массиве и перечислить через него, добавив все правильные хеш-ключи со значениями для объекта query.

+0

Спасибо, это то, что я выбрал, но есть некоторые проблемы с данными ember с ним. У меня есть вложенный ответ json и настраиваемый сериализатор. в этой конфигурации я заканчиваю двумя объектами магазина .. но эту проблему трудно объяснить. Один объект имеет id: 1, а другой имеет значение переменной queryparams >> id:? Identnummer = CL00000001 & var2 = x и так далее ... трудно воспроизвести в jsbin или скрипке ... – Jan

+0

Трудно сказать, что может вызвать проблема. Я предполагаю, что причина лежит где-то в вашем пользовательском сериализаторе. Вы можете задать другой вопрос, в том числе ваш сериализатор, модель и код адаптера + точный ответ с сервера, чтобы другие издевались над ним правильно. –

Смежные вопросы