backbone.js - Make the URL for a Backbone Collection Dynamic -


i backbonejs newbie.

i have scenario want make url of collection dynamic.

essentially following 2 urls want load collection from:

http://localhost:3001/employees
http://localhost:3001/employees/searchbyname/john

both url return same collection, difference being first url returns results while 2nd 1 based on search criteria.

i have search field in form , based on whether search field empty or contains search value, want toggle between these urls. examples have seen either records filter in view or dynamic url have seen id added existing url single record instead of records.

so first question : how can achieve dynamic url fetching collection?

my 2nd question : how call collection differently based on search field value collection picks appropriate value.

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;     }  }); 

so far code collection don't think going right direction.

try this:

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(); 

Popular posts from this blog