当具有:attributes

时间:2015-11-14 17:02:21

标签: javascript backbone.js backbone-routing

我使用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。所以如果有人有想法那就太棒了......

1 个答案:

答案 0 :(得分:0)

最后我明白了问题是什么......

基本上,在模型中设置url或urlRoot时会有所不同。因此,这两个选项出现:

  1. 网址:' /富&#39 ;.在这种情况下,它不会采用基本网址。 例如:www.web.com/foo

  2. 网址:'富&#39 ;.在这种情况下,它将采用基本URL 例如:www.web.com/api/foo

  3. 我的情况如下:

    (型号)Job.js:

    urlRoot: '/job',
    
    initialize: function () {
    },
    
    setId: function (job_id) {
        this.set('id', job_id);
    },