カテゴリー別アーカイブ: BACKBONE.js

Collection のparse

コレクションのparseは、内部でモデルのparseを呼び出して、最終的なモデルのインスタンスを取得している。

var Customers = Backbone.Collection.extend({
  model : Customer,
  url : "/cakephp_service/customers",
  parse: function(data){
    return data;
  }
});

Collection 操作

メソッド名 呼び出し方 説明
add add(Modelオブジェクト, オプション) CollectionにModelオブジェクトを追加するとaddイベントが発生する。オプションに{silent:true}を渡すことで、addイベントの発生を抑制できる
get get(Model オブジェクトのid) 指定したid を持つModelを探して取得する。Model に変更するとModel のchangeイベントがそのままCollectionのchangeイベントとして発生する
remove remove(Model オブジェクト, オプション) CollectionからModelオブジェクトを削除するとremoveイベントが発生する。オプションに{silent:true}を渡すことで、removeイベントの発生を抑制できる
reset reset(Modelオブジェクトの配列) 指定したModelオブジェクトの配列でコレクションをリセットするとresetイベントが発生する。オプションに{silent:true}を渡すことで、resetイベントの発生を抑制できる

model にクエリ文字を渡したい場合

options の値が内部では jQuery.ajax に渡されるので、/api/blogs/1?foo=bar のようにクエリ文字を渡したい場合は次のように書く。

var Blog = Backbone.Model.extend({
    defaults: {
        "dateTime": new Date().toISOString()
    },
    initialize: function (attrs, options) {
    },
    validate: function (attrs) {
        if (attrs.text.length === 0) {
            return "本文が入力されていません";
        }
    }
});
blog.fetch({data: {foo: "bar"}});

viewのrender

viewは、render();をもっている。
デフォルトではthisを返すだけなので、関数をオーバーライドする。
render() は、thisを返すというのが暗黙のルール。
つまりthis.render()すれば、return viewしなくてもthisを返す。