将动态ID传递给成功主干上的url

时间:2015-02-23 18:13:00

标签: javascript url express backbone.js

我点击了我的id,我使用destroy来删除它在我的数据库上,我的id console.log工作并返回值,但我想在URL上传递这个id:

'delete': 'http://localhost:3000/api/comments/'+ id

错误:Id未定义,我无法将其传递给我的成功。

这是我的代码:

    var PostPrimary = Backbone.Model.extend({
        methodToURL: {
            'read': 'http://localhost:3000/api/comments',
            'create': 'http://localhost:3000/api/comments',
            'update': 'http://localhost:3000/api/comments/:comment_id',
            'delete': 'http://localhost:3000/api/comments/:comment_id'
        },

        sync: function(method, model, options) {
            options = options || {};
            options.url = model.methodToURL[method.toLowerCase()];

            return Backbone.sync.apply(this, arguments);
        },
        idAttribute: "_id",
        defaults: {
            title: '',
            content: ''
        },
        postdata: function() {
            this.save({
                name: this.get('title'),
                content: this.get('content')
            }, {
                success: function(model) {
                    console.log("save");
                }
            });
        },
        deletedata: function() {
            this.destroy({
                success: function(model) {
                    //GET ID
                    id = model.get('idAttribute');
                    console.log(id);
                }
            });
        }
    });

    return PostPrimary;

2 个答案:

答案 0 :(得分:0)

Backbone模型附带处理url的实现,你的模型中不需要methodtoURl属性。

为您的模型指定urlRoot,ID将[urlRoot]/id

作为主干附加

您的模型可以简化为

var PostPrimary = Backbone.Model.extend({
        idAttribute: "_id",
        urlRoot: 'api/comments',
        defaults: {
            title: '',
            content: ''
        }
    });

不需要像Postdata这样的属性,你可以直接说

Model.save() instead postdata, and model.destroy() instead deletedata()

答案 1 :(得分:0)

如果你的模型中没有id,你可以创建一个闭包。

  deletedata: function() {

    var id=this.get('idAttribute');

            this.destroy({
                success: function(model) {
                    //GET ID                   
                    console.log(id);
                }
            });
        }