Backbone.Modelに突っ込んでみる

2013-02-24T00:00:00+00:00 Backbone.js JavaScript

前回同様ドキュメント読みつつ色々やってみた

var App = {
  "Models": {},
  "Collections": {},
  "Views": {}
};

// Backbone.Model
App.Models.Sample = Backbone.Model.extend({
  "idAttribute": "item_id", // model.idで参照可能なattributesキーを設定
  "defaults": {
    "title": "title"
  }
});

var m = new App.Models.Sample({ "name": "hoge" });

m.validate = function(attrs, options) {
  return false;
};

m.on("invalid", function(model, error) {
  console.log("ERROR: " + error);
});

m.on("change", function(model) {
  console.log(m.previous("name")); // 変更前のデータを出力。previousAttributesっていうメソッドを使うと特定属性データだけじゃなくて、変更前の属性データが取得できるのかも
});

m.url = "http://localhost:5000/save/sample"; // POSTメソッドでリクエストされる。セットされているデータは送られる
m.set("name", "fuga");
m.save();

m.url = "http://localhost:5000/delete/sample"; // DELETEメソッドでリクエストされる。セットされているデータ等は送られない?
m.set("item_id", 1);
m.set("name", "hoge");
m.destroy();

な感じかと。Backbone.Modelのvalidateメソッドでsave等((他に何が該当するかは現時点では不明))で処理前に実行されてセットされているデータを検証する事が可能な模様。返す値はエラーでinvalidなイベントがtriggerされる模様

で昨日調査していたその時のツイートが

追記

http://qiita.com/items/5acef8dd49f67fd7813c によると「silentを使うと後述するvalidateを用いたバリデーションも実行されない」っていうのがある模様

Backbone.Viewに突っ込んでみる Backbone.Collectionに突っ込んでみる