Backgrid.jsでdeleteボタンをつけるときに間違えたこと
上のようにコーディングしてしまい。urlがないよみたいなエラーになっていた。 this.model.collection.remove(this.model); を先に実行してしまってからデストロイを呼ぶと、modelからcollectionをたどれなくなって しまうために、URLがないよというエラーがでていたのか・・・ 下のように、素直にdestroyだけ呼べば、collectionからの削除もしてくれるようです。 うーん。ハマりました。
ということで、今日は寝ます。
var DeleteCell = Backgrid.Cell.extend({ template: _.template('<button {{ if (distance > 0) { }}disabled{{ } }}>Delete</button>'), events: { "click button": "deleteRow" }, deleteRow: function (e) { e.preventDefault(); this.model.collection.remove(this.model); this.model.destroy(); }, render: function () { this.$el.html(this.template(this.model.toJSON())); this.delegateEvents(); return this; } });
var DeleteCell = Backgrid.Cell.extend({ template: _.template('<button {{ if (distance > 0) { }}disabled{{ } }}>Delete</button>'), events: { "click button": "deleteRow" }, deleteRow: function (e) { e.preventDefault(); this.model.destroy(); }, render: function () { this.$el.html(this.template(this.model.toJSON())); this.delegateEvents(); return this; } });