在我的應用程序中,我想創建一個搜索表單以檢索一些用戶。該表格包含許多標準(姓氏,名字,出生日期等)。但我不明白我如何發佈我的表單來過濾我的收藏。我無法使用提取方法,因爲如果使用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