我在我的网络服务中有这些路由,我可以直接通过浏览器点击其中任何一个,然后返回正确的值。
app.get('/repairs', repair.findAll);
app.get('/repairs/:id', repair.findById);
当我要求Backbone执行此操作时,我意外地打电话给
app.get('/repairs', repair.findAll);
当我希望它达到
时app.get('/repairs/:id', repair.findById);
似乎在调用“/ repairs”而不是“/ repairs /:id”的代码片段是
var EditRepair = Backbone.View.extend({
el : '.page',
render : function(options) {
var scope = this;
var repair = new Repair({id: options.id});
//This has the correct id
console.log(options.id);
//I would expect this to call /repairs/12344312
//However it calls /repairs
repair.fetch({
success : function(repair){
var template = _.template($('#edit-repair-template').html(), {repair : repair});
scope.$el.html(template);
}
});
}
});
var Repair = Backbone.Model.extend({
urlRoot : 'repairs'
});
var Router = Backbone.Router.extend({
routes: {
'edit/:id' : 'editRepair'
}
});
var editRepair = new EditRepair();
var router = new Router();
router.on('route:editRepair', function(id) {
console.log('Edit Id : ' + id);
editRepair.render({id:id});
});
options.id可以是console.logged,并显示该项的正确ID。到目前为止,我已经遇到了一些问题,mongodb中的_id和脊柱中的id之间存在差异,但是对于我的生活,我不明白为什么这会发出维修而不是修理/ id。
任何帮助表示感谢。
答案 0 :(得分:2)
我的错,我有一个编码uri组件的ajax prefilter。
这搞乱了发出的请求。
$.ajaxPrefilter( function( options, originalOptions, jqXHR ) {
options.url = "http://localhost:3000/" + encodeURIComponent( options.url );
console.log(options.url);
});
已更改为
$.ajaxPrefilter( function( options, originalOptions, jqXHR ) {
options.url = "http://localhost:3000/" + options.url;
console.log(options.url);
});