ember.js - Make ember-data use the URL that ember is loading for the REST request -
on system working on right now, have had try tame ember-data bit how rest request. way ember-data default figures url request model not gonna cut backend using.
what need is, ember-data use same url ember loading, '?json' suffix. is, if ember switches page band page, , url /bands, want ember-data request /bands?json data needs, not whatever figures name of model. 1 say, wanted url calculated path of loading route, instead of name of model being used.
i have tried subclassing ds.restadapter{} , see if buildurl method this, can't figure out how url ember gonna load. buildurl method called before ember changes location, can't use document.location.href or something. can imagine need way ask ember loading, , url is.
any ideas of how this?
update
there hasn't been satisfying solutions, decided dirty way. it:
app.routersignature = [ ['index', '/', '/index_models'], ['bands', '/bands', '/band_models'], ['band', '/band/:band_slug', '/band_model'] ]; app.router.map(function() { (var = 0; < app.routersignature.length; i++) { var route = app.routersignature[i]; this.resource(route[0], {path: route[1]}); } }); app.customadapter = ds.restadapter.extend({ buildurl: function(record, suffix) { var url, suffix = '?json', needle = this._super(record); (var = 0; < app.routersignature.length && !url; i++) { var route = app.routersignature[i]; if (route[2] == needle) url = route[1]; } return url + suffix; } }); now app.routes , ds.restadapter.buildurl based off same data. first 2 values in app.routersignature list name of route, path of route. third value ds.restadapter.buildurl default guesses should url. custom adapter takes guess, matches 1 of items in app.routersignature list , takes second value item - routes path.
now requests ember-data makes same url routes path.
you can try setup adapter so:
app.adapter = ds.restadapter.extend({ ... buildurl: function(record, suffix){ return this._super(record, suffix) + "?json"; } }); app.store = ds.store.extend({ ... adapter: app.adapter.create(); ... }); see here more info on restadapter buildurl method. hope helps
Comments
Post a Comment