私はいくつかの必須属性を持つ単純なビューモデルを持っています...対応するプロパティが有効ではない場合、各入力を赤く強調したいが、ページが最初にロードされたときに表示されます。値が変更されたとき、またはユーザーが保存/続行しようとしたときのみ...ノックアウト検証が初期ロード時に評価されないようにする
データバインドを指定しているため、 = "css:{error:name.isValid()== false}"、しかしこれを動的に動作させる他の方法はわかりません...
var foo = { name: ko.observable().extend({required: true}) };
<div data-bind="css: { error: !name.isValid() }">
<input type="text" data-bind="value: name" />
</div>
この作品を作る方法に関するアイデアは感謝しています...ありがとう!
で申し訳ありませんが、私の例を簡略化する私の努力に、私はだと取り残さ実際には変更しなければならない他の子/兄弟要素(例:ラベルの色と "*"の視認性)があるので、input要素自体ではなく、 "error"クラスでparent-divを実際に飾るので、これはうまくいかない私のためには、私は〜への道を考え出したと思う私のCSSバインディングロジック(以下を参照)で.isModified()がチェックされているかどうかを確認します。 –
私は私の答えを次のように追加しました。よりシンプルで再利用可能なソリューションは、親要素を飾る....それを試してみてください! – RodneyTrotter
私はバインディングハンドラを作成することなく動作させることができました...私の解決策について私が気に入らない部分は、手動でビューモデルプロパティをループしてisModified(true )ので、私の外側のオブジェクトが.save()を呼び出すと、無効であるが変更されていないフィールドにエラー状態が表示されるようになります。 –