4

「Breeze はキャッシュ内のエンティティを自動的に検証します。切り離されたエンティティについては検証しません。たとえば、新しく作成された Customer は、その CompanyName が null であり、そのプロパティが必要であるため、技術的に無効です。Breeze は顧客を検証しません。キャッシュに追加するまで. これにより、新しいエンティティの値を設定してから、キャッシュに入って検証をトリガーする時間が得られます."

私の質問は上記の文脈にあります:

Breezejs と検証に関する Web に浮かんでいるサンプルは、新しいエンティティが作成されようとしていて、[保存] ボタンが押されたときに常に検証を示します。

1 つの入力フィールドからタブで 100 文字 (10 文字まで可能) を入力し、タブで次の入力フィールドに移動すると、breezejs はプロパティの変更も検証できますか? ユーザーが [変更の保存] ボタンを押したときではなく、プロパティの変更ごとに検証エラー メッセージを表示したいだけです。

または、これはまだキャッシュに追加されていないため、新しく作成されたエンティティでは機能しませんか? それは編集されたエンティティに対してのみ機能しますか?

4

2 に答える 2

4

デフォルトでは、エンティティがキャッシュに追加されます。エンティティを作成するときは、必要に応じて明示的entityStateDetachedまたは他の状態に設定できます。( entityManager.createEntity('entityType', null, breeze.EntityState.Detached))

検証に関しては、いつでも任意の状態のエンティティを手動で検証できます。プロパティが変更されたときに検証を確認したい場合は、単にentityAspect.propertyChangedイベントをサブスクライブします。このpropertyChangedイベントにより、エンティティ自体、変更されたプロパティの名前、古い値と新しい値にアクセスできます。次に、を使用してプロパティの検証を確認しentity.entityAspect.validateProperty(propertyname)、結果を処理するだけです。

プロパティの変更をサブスクライブし、手動で検証します
(以下のコードは、簡単な例から組み合わせたものです)

// assume order is an order entity attached to an EntityManager.
order.entityAspect.propertyChanged.subscribe(
function (propertyChangedArgs) {
    // this code will be executed anytime a property value changes on the 'order' entity.
    var entity = propertyChangedArgs.entity; // Note: entity === order
    var propertyNameChanged = propertyChangedArgs.propertyName;
    var oldValue = propertyChangedArgs.oldValue;
    var newValue = propertyChangedArgs.newValue;

    if (!entity.entityAspect.validateProperty(propertyNameChanged)){
        //Property is not valid. Inform the user if needed.
    }

});

詳細なヘルプと例については、次のリンクを参照してください:
propertyChanged イベントの購読
手動でのプロパティの検証
新しいエンティティの作成

于 2013-04-29T15:36:50.960 に答える
1

可能だと思いますが、手動で検証できます。

if (!newCustomer.entityAspect.validateEntity()) {/* do something about errors */}
You can also validate a specific property:

if (!newCustomer.entityAspect.validateProperty("CompanyName")) {
       /* do something about errors */} 

私はこれらの例を以下から取得しました: http://www.breezejs.com/documentation/validation

これがお役に立てば幸いです。

于 2013-04-28T19:27:24.983 に答える