我使用Backbone很新,现在我发现了这个新问题。
我使用路线" jobprofile"创建一个从urlRoot =" job"中获取数据的视图(使用默认ID执行job / id)但是如果我将:id添加到路由中作为" jobprofile /:id"我需要在浏览器中键入以获取job.id视图,然后停止工作,模型的URL更改为:" ... / jobprofile /作业/ ID"哪(显然)给我404错误。
希望很清楚。谢谢!
CODE:
我有一个router.js
routes: {
...
"jobprofile/:id": "view", //without /:id works!
},
view:function(id){
console.log("view");
this.job = new Job();
this.job.setId(id); //This is set correctly
this.jobProfileView = new JobProfileView({
model: this.job,
el: $('.tab-content')
});
},
(查看)JobProfileView.js:
...
initialize: function(){
var that = this;
this.model.fetch().done(function(){
console.log("fetch done!");
that.render();
});
},
...
(型号)Job.js:
urlRoot: 'job',
initialize: function () {
},
setId: function (job_id) {
this.set('id', job_id);
},
更新:
确定。所以它看起来我正在修复"将 this.navigate(' / jobprofile'); 添加到router.js中的方法 view 的问题。我想导致问题的/:id会从路径中删除(实际上当你看到浏览器不再存在时),但我仍然在方法中保留id。
在任何情况下,这都是一个非常糟糕的解决方案,因为当我尝试返回时,它会创建一个bucle并转到jobprofile / id并再次导航到jobprofile。所以如果有人有想法那就太棒了......
答案 0 :(得分:0)
最后我明白了问题是什么......
基本上,在模型中设置url或urlRoot时会有所不同。因此,这两个选项出现:
网址:' /富&#39 ;.在这种情况下,它不会采用基本网址。 例如:www.web.com/foo
网址:'富&#39 ;.在这种情况下,它将采用基本URL 例如:www.web.com/api/foo
我的情况如下:
(型号)Job.js:
urlRoot: '/job',
initialize: function () {
},
setId: function (job_id) {
this.set('id', job_id);
},