2012-02-09 4 views
1

В моем приложении я хотел бы создать форму поиска, чтобы получить некоторых пользователей. Эта форма содержит много критериев (фамилия, имя, дата рождения и т. Д.). Но я не понимаю, как я могу опубликовать свою форму, чтобы отфильтровать мою коллекцию. Я не могу использовать метод fetch, потому что, если я использую метод GET, мои критерии поиска будут отображаться в URL-адресе. На самом деле я хотел бы отправить запрос POST (который содержит критерии поиска для сериализации в JSON) на сервер и получить список пользователей.Форма и критерии поиска критериев поиска

Я прочитал базовую документацию, но я не нашел ничего, что позволило бы мне это сделать. Эта функциональность не поддерживается магистральной сетью? Есть ли какой-то рабочий стол для реализации этих требований?

Заранее спасибо

ответ

1

Короче говоря, я не думаю, что позвоночник хорошо подходит для того, что вы описываете. Читайте дальше для более длинной версии ...

Основываясь на вашем вопросе, я думаю, что основа будет хорошо отображать вашу коллекцию пользователей, но не очень хорошо при представлении ваших критериев фильтра.

Вы можете создать модель критериев и установить атрибуты модели на имя пользователя, день рождения и т. Д., А затем вы можете отправить ее на сервер с использованием магистрали. Однако при сохранении с использованием магистрали предполагается, что вы сохранили критерии. Любой результат, возвращаемый с сервера из этого POST, считается обновленным свойствами критериев, а не списком пользователей.

+0

Спасибо за ваш ответ, который подтверждает меня, что невозможно напрямую с помощью базовой сети. Тем не менее, я хотел бы использовать Backbone для остальной части моего приложения. Таким образом, можно реализовать действие поиска, которое напрямую отправляет запрос POST (используя $ .ajax) и заполняет мою коллекцию успешным обратным вызовом с помощью UserCollection.refresh (users). После этого я могу перерисовать свой ListView. Возможно ли и правильно это сделать? – sylmandel

+0

Абсолютно. Создайте свою форму, которая будет POST с помощью ajax, а затем в вашем обратном вызове успеха (который, скорее всего, будет json-массивом пользователей), сделайте что-то вроде «App.Users = new UsersCollection (json)» и передайте эту коллекцию на базовый вид. Виола, вы используете позвоночник так же, как он был разработан :) Удачи – timDunham

0

Тим прав, что это не совсем то, для чего предназначена магистраль. Говоря, я думаю, что по-прежнему буду использовать модель Backbone для отслеживания состояния критериев поиска. В этой модели я бы добавил пользовательский метод для активации поиска, который бы сериализовал состояние модели и POST его на сам сервер. Об успехе этого метода я бы использовал результаты для сброса текущей коллекции пользователей.

Вот моя идея в коде:

var SearchModel = Backbone.Model.extend({ 
    defaults: { 
    firstName: "*", 
    lastName: "Smith" 
    }, 
    search: function() { 
    $.ajax({ 
     dataType: "json", 
     type: "POST", 
     data: this.toJSON(), 
     success: function(data) { 
      this.options.peopleCollection.reset(data); 
     } 
    }) 
    } 
}); 

var myPeopleCollection = new PeopleCollection(); 
var mySearch = new SearchModel({ peopleCollection: myPeopleCollection }); 

mySearch.set({ firstName: "Steve"}); 
mySearch.set({ lastName: "Smith" }); 

mySearch.search();

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