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
-

執筆者:

関連記事

ecoテンプレートでヘルパーを使う

By: Stephanie Dillingham – CC BY 2.0   参照 backbonecoffeescript.com/eco-helpers-tutorial e …

Rails3.2でJasmineをつかってBackbone.jsのViewをテストしてみる

  By: Bering Land Bridge National Preserve 前回 Rails3.2でJasmineをつかってBackbone.jsのModelをテストしてみる Ra …

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

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

Yeomanで最新のJavaScript開発環境を最速で整える

環境 mac OSX Lion Yeomanは最新のJavaScript開発のための統合環境を提供してくれます yeoman.io/index.html 紹介動画 目次1 インストール2 さっそくアプ …

Backbone.jsでViewのrender前後にコールバック処理を追加する

By: Michael Gil – CC BY 2.0 afterRender() callback in Backbone.js Views [crayon-58d5e9c84b7855 …