1

ノックアウト js と jquery の最新バージョンを使用しています。特定の ko.observable に値があるたびに開閉する jquery ダイアログを作成しようとしています。この jsfiddle のコード ( http://jsfiddle.net/rniemeyer/WpnTU/ )に基づいて実装し ました。これは、この Knockout.js フォーラム ( https://groups.google.com/d/msg/knockoutjs/ ) で見つけました。 XIaQMNHjy7Q/BpfDU5inKVQJ .

ただし、このアプローチは、非推奨になった jquery-tmpl.js プラグイン (バージョン 1.0.0pre) を含めた場合にのみ機能します。問題を 2 つの jsfiddle、動作するバージョン ( http://jsfiddle.net/LhEnV/29/ )、および壊れたバージョン ( http://jsfiddle.net/gygh3/1/ ) に絞り込みました。唯一の違いは、jquery-tmpl.js が 2 番目のバージョンに含まれていないことです。

問題の根本は、最初にページをロードしたときに、ダイアログとそのコンテンツが依存しているオブザーバブルが設定されていないことです。したがって、テンプレートがバインドされるプロパティは使用できず、エラーが発生します。ノックアウトの前に jquery-tmpl を含めると問題が解決するので、jquery-tmpl が使用可能になると、ノックアウト テンプレート エンジンの動作が変わると想定しています。ただし、非推奨のプラグインに依存したくありません。

jquery UIダイアログとその内容をViewModelにバインドするより良い方法はありますか?

4

1 に答える 1

1

これを変更するだけです:

<script id="newDialogTmpl" type="text/html">
    Add <span data-bind="text: displayName"></span>?
</script>
​

それに:

<script id="newDialogTmpl" type="text/html">
    <!-- ko if: $data -->
    Add <span data-bind="text: displayName"></span>?
    <!-- /ko -->
</script>

初めてあなたのnewThingプロップが等しいnullので、それはトリガー参照エラーです。が null でないかどうかを確認し、 $datanull の場合はテンプレートをレンダリングする必要があります - 何もしません

于 2012-07-17T21:12:31.723 に答える