Selim Kurnaz
Selim Kurnaz

Reputation: 3

Model not sending delete request on destroy

sil is the delete event, but it does not send delete request method.

var NoteModel = Backbone.Model.extend({
    urlRoot:"/DenemeBackbone/webresources/com.mycompany.denemebackbone.note",
    defaults: {
        note: "Boş"
    }
});

I have two views.

var NoteView = Backbone.View.extend({
    tagName: "tr",
    template: "<td> <span>{{note}}</span><input type='text' value='{{note}}' style='width: 190px;display: none;'/><button class='btn btn-danger btn-mini' style='float: right;'>Sil</button> </td>",
    model: {},
    events: {

        "click button":"sil"
    }

    sil:function(){
        this.model.destroy(); // HTTP DELETE
        this.remove();
        alert(this.model.note);
    }   

});

Upvotes: 0

Views: 99

Answers (2)

Selim Kurnaz
Selim Kurnaz

Reputation: 3

But not run.

  var NoteModel = Backbone.Model.extend({
    urlRoot:"/Deneme2/resources/com.mycompany.deneme2.note",
     id:null,
    defaults: {
        note: ""
    }

});

var NoteView = Backbone.View.extend({
    tagName: "tr",
    template: "<td> <span>{{note}}</span><input type='text' value='{{id}}' style='width: 190px;display: none;'/><button class='btn btn-danger btn-mini' style='float: right;'>Sil</button> </td>",
    model: {},
    events: {
        "dblclick span": "duzenlemeModu",
        "blur input": "duzenle",
        "click button":"sil"
    },
    duzenlemeModu: function () {
        this.$el.find("input").css("display", "");
        this.$el.find("span").css("display", "none");
    },
    duzenle: function () {
        this.model.save("note",this.$el.find("input").val());  // HTTP PUT
        this.render();

        this.$el.find("input").css("display", "none");
        this.$el.find("span").css("display", "");
    },
    sil:function(){     
        this.model.destroy(); // HTTP DELETE
        this.remove();
    }   ,
    render: function () {
        var html = Mustache.to_html(this.template, this.model.toJSON());
        $(this.el).html(html);

        return this;
    }
});

var AppView = Backbone.View.extend({

    el: $("body"),
    events: {
        "keypress #note": "kaydet"
    },
    kaydet: function (evt) {

        if (evt.keyCode !== 13) return;

        var noteModel = new NoteModel();
      noteModel.set("note", $("#note").val());

      noteModel.save(); // HTTP POST

        var noteView = new NoteView();
        noteView.model = noteModel;

        $(".table").append(noteView.render().el);
        $("#note").val("");
    }
});

var appView = new AppView();

Upvotes: 0

Andrew
Andrew

Reputation: 13853

If you look at the source you can see what is going on,

If this.model.isNew() is true, then it will not send the xhr delete. isNew() returns this.id == null, so in order to delete it you should assign it an id.

ie.

var myNote = new NoteModel({
 id : 'myid'
});

Upvotes: 1

Related Questions