搜索条件表单和集合

时间:2012-02-09 22:38:34

标签: javascript backbone.js

在我的应用程序中,我想创建一个搜索表单以检索一些用户。此表单包含许多条件(姓氏,名字,生日等)。但我不明白如何发布我的表单以过滤我的收藏。我不能使用fetch方法,因为如果我使用GET方法,我的搜索条件将显示在URL中。实际上我想向服务器提交一个POST请求(其中包含用JSON序列化的搜索条件)并检索用户列表。

我已经阅读了主干文档,但我没有找到任何允许我这样做的内容。骨干网不支持此功能?有一些方法可以实现这些要求吗?

提前致谢

2 个答案:

答案 0 :(得分:1)

简而言之,我认为骨干不适合你所描述的内容。继续阅读更长版本......

根据您的问题,我认为骨干网非常适合展示您的用户集合,但在提交您的过滤条件时不太好

您可以创建条件模型并将模型的属性设置为用户名,生日等,然后您可以使用骨干将其发布到服务器。但是,当您使用骨干保存它时,假定您保存了条件。假定从该POST返回服务器的任何结果都是条件的更新属性,而不是用户列表。

答案 1 :(得分:0)

蒂姆是正确的,这不是Backbone的意思。话虽如此,我认为我至少仍会使用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();