2016-08-30 9 views
0

を作成しているときは選択であるに応じて、予期しない方法で観察可能な影響を与える選択します。配列の最初の要素には、uniqueContainerIdがある場合とない場合があります。私は、selectedPackagingLevels [0] .uniqueContainerId()!=未定義のときに、選択したコンテナを表示するか、そうでない場合は "--Select--"オプションを表示します。KnockoutJSは、選択が

問題:私は選択のみこのチェックを通過した後に作成させたとき:

<div class="pull-left" data-bind="if: existingPackagingLevels().length > 0"> 

選択は基本的に私のexistingPackagingLevelsを上書きする[0] .uniqueContainerId()、それは未定義になります。 私はもう一つのチェック "activateSelect()== true"を追加し、それが遅れて本当の表示を開始します。 100msの遅れで、それは半分と半分で働く。時間が半分になると値が上書きされ、未定義に設定され、期待どおりに動作する時間の半分になり、uniqueContainerIdに対応するコンテナが表示されます。遅延が大きくなると常に動作します。

だから私はトリッキーでそれを遅らせることなく動作させるにはどうすればいいですか?

答えて

0

valueAllowUnset parameterをお試しください。あなたは<select>要素に値バインディングを使用する場合

通常は、それ はあなたが関連付けられているモデル値が選択されている<select>内のどの項目 記述することを意味します。しかし、モデル の値をリストに対応するエントリがないものに設定するとどうなりますか? デフォルトの動作では、Knockoutがモデル値を に上書きして、ドロップダウンリストで既に選択されているものにリセットします。 は、モデルとUIが同期しなくなるのを防ぎます。

ただし、その動作を望まないことがあります。代わりに ノックアウトを使用して、モデル観測値が の値をとって<select>に対応するエントリがない場合は、 valueAllowUnset: trueを指定します。 この場合、 のモデル値を<select>で表すことができない場合は、視覚的には空白で表される 時刻には選択された値が存在しません。ユーザー が後でドロップダウンからエントリを選択すると、これは通常どおり モデルに書き込まれます。

関連する問題