2014-01-20 21 views
6

breezeバリデータの情報は読んでいますが、実際に発生しているエラーを表示する方法がわかりません。breezeクライアントの検証エラーを表示する方法

エラー:クライアント側の検証エラーが発生しました。詳細は、このオブジェクトのエンティティエラーコレクションを参照してください。

私はそれがentity.entityAspect.getValidationErrors()のどこかにあると信じていますが、そこから実際のエラーを取得する方法を見つけるのに問題があります。

エンティティにレコードを挿入しようとしていますが、このエラーメッセージが表示されたときに変更を保存しようとしています。

答えて

9

参照:

http://www.breezejs.com/sites/all/apidocs/classes/ValidationError.html

http://www.breezejs.com/sites/all/apidocs/classes/EntityAspect.html#method_getValidationErrors

簡単な例では:

var errors = entity.entityAspect.getValidationErrors(); 
errors.forEach(function(ve) { 
    var errorMessage = ve.errorMessage; 
    var property = ve.property; 
}); 

のEntityManagerのエラーのすべてを取得するには、使用することができます

manager.getEntities().forEach(function(entity) { 
    var errors = entity.entityAspect.getValidationErrors(); 
    //.. do something with the errors .. 
}); 
+0

私はこれまでに調べました。 getValidationErrorsは常に戻ります。未定義のメソッド 'getValidationErrors'を呼び出せません。manager = configureBreezeManager(); manager.entityAspect.getValidationErrors() – user1813251

+1

Breeze zipのDocCodeサンプルの検証例を見てください。しかし、あなたのコメントを見れば、EntityManagerには 'entityAspect'プロパティがなく、エンティティ自体にはそれぞれ 'entityAspect'プロパティがあります。エンティティマネージャのすべてのエラーが必要な場合は、manager.getEntities()を使用します。forEach(function(ent){var errors = ent.entityAspect.getValidationErrors()); –

+0

ありがとうございました。 – user1813251

0

あなたは「キャッチ」のエラーはあなたがそうのように、試してみて、保存することができます:

manager.saveChanges() 
    .catch(function(error){ 
     console.log("error catch", error, error.entityErrors); 
    }); 

は、その直後の任意のコードが

setTimeout(function() {}, 0); 

ようにする必要があることに注意してくださいキャッチは非同期です。 これは、エラーのあるものを見つけるためにアプリケーションのすべてのエンティティをループする必要はありませんでした。

関連する問題