8

これが長期的に使用するのに適した方法ではないことはわかっていますが、トラブルシューティングのために、テンプレートをバインドするときに単純な文字列を渡し、テンプレート内の変数としてアクセスする方法はありますか? たとえば、これが私のバインディングである場合:

<!-- ko template: { name: tmplOne }, myvar: 'apple' -->

これはtmplOne でした:

<div>
    <span>Fruit: </span>
    <span data-bind="text: myvar"></span>
</div>

次のようになります。

fruit: apple

「果物」と呼ばれるビューモデルでオブザーバブルを宣言する必要がある場合でも、テンプレートバインディングで手動で設定できますか?

4

4 に答える 4

6

使用する

<!-- ko template: { name: tmplOne, templateOptions: {myvar: 'apple'} } -->

詳細はこちら: http://www.knockmeout.net/2011/03/quick-tip-reusing-template-by-passing.html

于 2015-06-04T23:42:58.747 に答える
5

テンプレートバインディングにデータパラメーターを提供し、必要に応じてオブジェクトリテラルを定義できます。

<!-- ko template: { name: tmplOne }, myvar: 'apple' -->

代わりにこれを行います:

<!-- ko template: { name: tmplOne, data: { myvar: 'apple' } } -->

http://knockoutjs.com/documentation/template-binding.html

于 2013-12-06T18:31:37.330 に答える
1

dataバインディングのパラメーターにコンポジションを指定することで、現在適用されている viemodel を維持しながら、任意のデータをテンプレートに渡すことができます。

たとえば、テンプレート コンテンツをwithバインディングでラップし、composed$dataプロパティにバインドして、新しいバインディング コンテキストを作成することができます。このように、現在適用されているバインディングを更新する必要はありません。

ko.applyBindings({
  fruits: ['banana', 'orange']
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>

<div data-bind="template: { name: 'tmplOne', data: { myModelData: $data, myVar: 'apple' } }"></div>

<script type="text/html" id="tmplOne">
  <!-- ko with: myModelData -->
    <span>My model</span>
    <ul data-bind="foreach: fruits">
      <li data-bind="text: $data"></li>
    </ul>
    <div>
      <span>My custom data:</span>
      <span data-bind="text: $parent.myVar"></span>
    </div>
  <!-- /ko -->
</script>

于 2019-04-01T08:30:39.073 に答える