javascriptのreplaceでまとめて置換する
たとえば、
/path/to/:category/:type
みたいなのがあったときに{ category: 'hoge', type: 'fuga' }
をわたしてあげると/path/to/hoge/fuga
にして欲しいなってとき。
replaceの引数にfuctionが使えるので、
var path = '/path/to/:category/:type' var params = { category: 'hoge', type: 'fuga' } path = path.replace(/\:([^\/]*)/g, function(all, group) { return params[group]; });
みたいなことができる。
backboneを使っていてのっぴきならない理由で/path/to?category=hoge&type=fuga
のようにparamsを使えない時に/path/to/hoge/fuga
させるために使った。
fetch: function(options) { options = options ? _.clone(options) : {}; var data = options.data; delete options.data; this.url = this.url_tmpl; if (data) { this.url = this.url.replace(/\:([^\/]*)/g, function(all, group) { return data[group]; }); } return Backbone.Collection.prototype.fetch.call(this, options); },