0

ノックアウト v2.3.0 の使用:

「with: modelName」を使用してモデルにバインドするセクションがあります。

そのセクションでは、数値インクリメンターを作成しました。

  1. マイナスが付いた灰色のボタン
  2. 値を示す入力フィールド、
  3. プラスが付いた灰色のボタン

基本的に、ご想像のとおり、マイナスをクリックするとカウンターが減少し、プラスをクリックすると増加します。

IE8 (おそらく IE7 も) を除くすべてのブラウザーで完全に動作します。

IE8 では、クリア キャッシュで正常に動作します。ただし、ページを更新すると、最初のボタンが機能しなくなります。基本的に、後続のページの読み込みでは、そのフィールドにクリック バインディングはまったくありません。

最初は、各ボタンに同じ機能を使用させ、別の文字列を渡すようにしていました:「下」と「上」。しかし、何らかの理由でIEはこれを処理できないと思いました。

そこで、decrementChildCount() と incrementChildCount() という個別の関数を作成しました。

しかし、同じことが起こります。IE8 は、クリアされたキャッシュからページをロードする際に問題ありません。ただし、その後のページの読み込みでは、クリック バインディングが失われます (最初のボタンのみ)。

元のマークアップのすぐ上にクリーン バージョンのマークアップを追加したときに、もう 1 つ見つけたことがあります (そのため、2 セットのボタン フィールド ボタン グループが必要になります)。

これで、最初のボタンのクリック バインドが失われますが、セクションの最初のボタンではないため、元のマイナス ボタンも含め、他のすべてのボタンは正常に動作します。そのマイナス ボタンは、後続のページの読み込みで正常に機能するようになりました。

これどうしたの?最初のクリック バインド ボタンが、その後のページ読み込みでクリック バインドを失うのはなぜですか?

そして、これを解決するために、「実際の」最初のボタンを機能させるためだけに、ダミーのクリックバインドボタンを非表示にしたくありません....

-- スコット

4

1 に答える 1

0

これを試して、短期的に問題を見つけ、長期的にそれを修正するための解決策を考え出してください -

データバインドをこれに変更します-

data-bind="with: $data.modelName"

modelName が null の場合は何も表示されず、そうでない場合は modelName が表示されます。

次に、プレタグを使用して、いつ、またはなぜなくなるのかを確認します。

<pre data-bind="text: ko.toJSON($data, null, 2)"></pre>
于 2013-10-10T16:04:41.087 に答える