我是BackboneJS的新手。
我想让我的收藏品的网址完全动态化。
以下是我要从中加载我的集合的2个网址:
http://localhost:3001/employees
http://localhost:3001/employees/searchByName/John
URL都返回相同的集合,区别在于第一个URL返回所有结果,而第二个URL基于搜索条件。
我的表单中有一个搜索字段,根据搜索字段是空还是包含搜索值,我想在这些网址之间切换。我看到的所有示例都在视图中记录过滤器,或者我看到的唯一动态URL是将id添加到现有url以获取单个记录而不是所有记录。
所以我的第一个问题是:如何为我的收藏实现此动态URL提取?
我的第二个问题是:如何根据搜索字段值以不同方式调用我的集合,以便集合选择适当的值。
someCollection = Backbone.Collection.extend({
url: function() {
if(this.searchName!=null)
return baseURL + "/" + "searchByName" + "/" + this.searchName;
else
return base_URL;
},
search: function(searchTerm)
{
console.log("Search Term =" + searchTerm);
var results = new someCollection();
results.searchName = searchTerm;
results.fetch({
success: function()
{
vent.trigger("search:results", results);
},
error: function(collection, response){}
});
},
parse: function(response, options)
{
return response;
}
});
到目前为止,我的Collection代码是这样的,但我认为我没有朝着正确的方向发展。
答案 0 :(得分:0)
尝试这样的事情:
var SomeCollection = Backbone.Collection.extend({
url: function() {
if (this.searchName) {
return this.baseURL + "/" + "searchByName" + "/" + this.searchName;
} else {
return this.baseURL;
}
},
searchName: null,
search: function(searchName) {
console.log("Search Name =" + searchName);
this.searchName = searchName;
this.fetch({
success: function() {
vent.trigger("search:results", results);
},
error: function(collection, response){
console.log("Something went wrong");
}
});
},
parse: function(response, options) {
return response;
}
});
var aFilteredCollection = new SomeCollection();
aFilteredCollection.search("Name goes here");
var aNonFilteredCollection = new SomeCollection();
aNonFilteredCollection.search();