骨干删除模型

时间:2012-03-16 08:08:51

标签: asp.net backbone.js

在这种情况下,即使从DOM中删除了元素,当我点击清除时它也不会触发firebug中的Http方法Delete。

var DecisionItemView = Backbone.View.extend({
        tagName: "li",
        template: _.template($('#item-template').html()),
        initialize: function () {
            this.model.bind('change', this.render, this);
            this.model.bind('destroy', this.remove, this);
        },
        events:{
            "click span.decision-destroy": "clear"
        },
        render: function () {
            $(this.el).html(this.template(this.model.toJSON()));
            return this;
        },
        clear: function () {
            var answer = confirm("Are you sure you want to delete this decision?");
            if (answer) {
                this.model.destroy({
                    success: function () {
                        console.log("delete was a success");
                    }
                });
            }

        },
        remove: function(){
            $(this.el).remove();
        }
    });

1 个答案:

答案 0 :(得分:2)

你的模特有id吗?如果不是,则destroy方法不会触发http请求。

要检查此内容的一些代码

var M=Backbone.Model.extend({
    url:'/echo/json/'
});

var DecisionItemView = Backbone.View.extend({
        tagName: "li",
        initialize: function () {
            this.model.bind('change', this.render, this);
            this.model.bind('destroy', this.remove, this);
        },
        events:{
            "click span.decision-destroy": "clear"
        },
        render: function () {
            var txt=(this.model.get("id")) ? "Clear with id":"Clear without id";
            $(this.el).html("<span class='decision-destroy'>"+txt+"</span>");
            return this;
        },
        clear: function () {
            var answer = confirm("Are you sure you want to delete this decision?");
            if (answer) {
                this.model.destroy({
                    success: function () {
                        console.log("delete was a success");
                    }
                });
            }

        },
        remove: function(){
            $(this.el).remove();
        }
});

var m1=new M({id:1}); var m2=new M();
var view1=new DecisionItemView({model:m1});
$("ul").append(view1.render().$el);
var view2=new DecisionItemView({model:m2});
$("ul").append(view2.render().$el);

小提琴http://jsfiddle.net/rSJP6/