我的网络服务中有这些路由,我可以直接通过浏览器点击其中任何一个,然后返回正确的值。
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。
任何帮助表示赞赏。