在我的应用程序中,我想创建一个搜索表单以检索一些用户。该表格包含许多标准(姓氏,名字,出生日期等)。但我不明白我如何发布我的表单来过滤我的收藏。我无法使用提取方法,因为如果使用GET方法,我的搜索条件将显示在URL中。事实上,我想提交一个POST请求(包含JSON序列化的搜索条件)到服务器并检索用户列表。搜索条件表单和集合
我已阅读骨干文档,但我没有发现任何事情可以让我这样做。这个功能不被骨干支持?有一些workarround来实现这个要求?
在此先感谢
在我的应用程序中,我想创建一个搜索表单以检索一些用户。该表格包含许多标准(姓氏,名字,出生日期等)。但我不明白我如何发布我的表单来过滤我的收藏。我无法使用提取方法,因为如果使用GET方法,我的搜索条件将显示在URL中。事实上,我想提交一个POST请求(包含JSON序列化的搜索条件)到服务器并检索用户列表。搜索条件表单和集合
我已阅读骨干文档,但我没有发现任何事情可以让我这样做。这个功能不被骨干支持?有一些workarround来实现这个要求?
在此先感谢
总之,我不认为主链是非常适合你所描述的。请阅读更长的版本...
根据你的问题,我认为骨干网将非常适合显示你的用户集合,但不太好在提交你的过滤标准。
您可以创建一个标准模型,并将模型的属性设置为用户名,生日等,然后您可以使用主干将其发布到服务器。但是,当您使用主干进行保存时,假定您保存了标准。假定服务器从该POST返回的任何结果都是条件的更新属性,而不是用户列表。
蒂姆是正确的,这不完全是骨干的意思。这就是说我认为我至少还会使用Backbone模型来跟踪搜索条件的状态。在这个模型中,我将添加一个自定义方法来激活搜索,将序列化模型的状态并将其发布到服务器本身。在此方法的成功之后,我将使用结果来重置当前的用户集合。
这里是我的代码的想法:
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();
感谢您的回复,确认我无法直接使用Backbone集合。不过,我想在我的应用程序的其余部分使用Backbone。那么是否有可能实现一个直接提交POST请求的搜索动作(使用$ .ajax)并使用UserCollection.refresh(users)在成功回调中填充我的集合。之后,我可以重新呈现我的ListView。这样做是否可行并正确? – sylmandel 2012-02-10 08:41:49
绝对如此。创建你的表单,使用ajax进行POST,然后在你的成功回调(最有可能是用户的json数组)中执行类似于“App.Users = new UsersCollection(json)”的操作,并将该集合传递给骨干视图。中提琴,你正在使用骨干,就像它的设计:)好运 – timDunham 2012-02-10 14:46:20