鈍足ランナーのIT日記

走るのが好きな5流のITエンジニアのブログ。

趣味の範囲は広いけど、どれも中途半端なクソブロガー楽しめるWebアプリを作ってあっと言わせたい。サーバーサイドPerl(Mojolicious)、クライアントサイドVue.js。Arduinoにも触手を伸ばす予定。

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;
      }
  });