Backbone.js

Backbone.js0.9.10以降のクライアントサイドでのvalidate

投稿日:

参照

backbonejs.org/#Model-validate

stackoverflow.com/questions/14426155/backbone-validate-does-not-work

 

以前の情報 基本的なことが日本語でわかるので

Backbone.js入門 「Model」

 

Model

バリデーション(検証)はModelのvalidateメソッドをオーバーライドして設定する

validateが何かの値を返せば、違反ということになる

違反となると、モデルに対して”invalid”イベントが発行され、インスタンスにvalidationErrorプロパティがセットされる

View

validationErrorをとってもいいけど、invalidイベントを取るとこんな感じ

 

コンソールにはこんな感じでとれる 第2引数に返り値がはいるみたい

 

例えば、こんな実装

Model

返り値をハッシュにして

template

フィールドの横にメッセージエリアを準備しておいて

View

アクションのたびにメッセージをクリアにする

 

setのときvalidateでボタンを押さなくてもバリデーション実行(未完)

saveのタイミングにvalidateメソッドが実行されるけど、setメソッドでもvalidate:trueオプションをつければ、validateが実行される

 

つまり、backbone_datalink.jsをちょっと改造して

としてやれば、フォームの値を変えたとき(たぶんblurして値が変わっていれば)バリデーションが実行されてメッセージが出る

 

ただ、やっぱりこのままだとメッセージが出っぱなしなんで

こんな感じでイベントを設定すれば、メッセージも消える

*ただ、これでもバグがあって

最初のフィールドを入力して、次のフィールドに行くとき、バリデーションが実行されて、まだ入力してないのにエラーメッセージが出てきてむかつくことになる

あと、エラーメッセージが一度に1つしかでない(このへんはvalidateの返り値を変えてやればなんとかなりそう)

いまは考えたくないので、ボタンを押したらバリデーションで満足しておく

たぶん、invalidイベントをやめて、フィールドからchangeかblurするごとにvalidateしてメッセージを取得する

そして、ボタンを押したら全部をバリデーションとかしたらいいんじゃないかという走り書き

-Backbone.js
-

執筆者:

関連記事

Todolistをmarionette化

By: Jackie – CC BY 2.0 目次1 Marionette.js2 インストール3 Application4 gulpfile.coffee5 ItemView6 Coll …

Backbone.jsからRails3.2へのPUTに対して204(no content)が返ってくる問題

By: Bernardo Chang – CC BY 2.0   UPDATEするときRailsはデフォルトでJSONには何も返さないのがデフォルトぽい [crayon-5927 …

Backbone.jsからjQuery UIのDialogを使う例

Backbone.js楽しくなってきた 部品ごとのクラスをつくって、それに飾りとイベントをつけて、あとは上位部品から呼び出してくっつけるだけ jQuery UIのダイアログの場合は、公式のサンプルだと …

RailsでこんにちはBackbone.Marionette

By: palindrome6996 – CC BY 2.0 自分の中でmarionette熱がだんだんと高まりつつあり、特徴的なItemView、CollectionView、Compo …

backbone-railsのscaffoldで生成されるコードでルーティングとCRUDの処理をどうやってるのか読んでみた

By: asobi tsuchiya   目次1 はじめに2 サンプルの準備3 初期化4 ルーター5 READ6 CREATE7 UPDATE8 DELETE はじめに backbone-r …