2011-12-14 7 views
2

私のプロジェクトで頻繁に使用されるいくつかのコンポーネントをテンプレートにしようとしています。 htmlコンテンツに導入された冗長性を省略します。しかし、それが可能であれば、私はそれを理解しませんでした。誰かがテンプレートオプションを経由して表示される場合があり、入力コンポーネントにバインドされたパラメータが調整可能なものでなければならないノックアウトjs:テンプレートバインディングのパラメータ

<script type="text/x-jquery-tmpl" id="somefieldtemplate" > 
<input name=" Prefix" type="text" data-bind="value: ${ $item.fieldName}SomeField" /> 
    ..... mor contents ... 
</script> 

ので、私は

<div data-bind="template: { name: 'somefieldtemplate', 
     templateOptions: 
      { fieldName:'somefield', displayName:'somefieldlabel' } }"> 

エラーメッセージのようなエントリを持っている:

私のようなテンプレートを持っています私のコンソールのログには:

SyntaxError: Unexpected token { 

私は事実を絞り込みましたif私は$item.fieldNameを取り除き、その価値はそれが機能する。

誰かがこの問題の啓発的解決策を持っていますか?

編集:現在のバージョンでknockout.jsを用いた情報イムとして

knockout-latest

+0

<script type="text/x-jquery-tmpl" id="somefieldtemplate" > <input name="${$item.fieldName}Prefix" type="text" data-bind="value: someModel[$item.fieldName + 'SomeField']" /> ..... more contents ... </script> 

テンプレート結合性:この観測は、常に<field>SomeField

テンプレートのような名前を持っています'data-bind =" value:$ data [$ item.fieldName] " –

+0

このコメントをいただきありがとうございます。それは問題の正確な解決策ではありませんでしたが、解決策への正しい方向性をもたらしました。 – fyr

答えて

0

悲しいことに、私は自分自身でそれに答える必要があります。しかし、私はそれを働かせることができた。 RP Niemeyerのおかげです。このに興味を持って皆のために

観測がレジスタコンポーネントメソッドでモデルsomeModelに動的に生成されます。あなたが直接利用可能な変数にアクセスすることができ、データバインドするので、あなただけのような何かを行うことができ内部

<div data-bind="template: { name: 'somefieldtemplate', 
     templateOptions: 
      { fieldName:'somefield', displayName:'somefieldlabel' } }"> 
0

data-bind="value: ${fieldName} + 'SomeField'" 
+0

これもテストしましたが、これはうまくいきません。 'data-bind'の評価は' knockout.js'の他の属性とは異なります。同じコードを別の属性に入れると、それは正しく動作しますが、データバインド内では機能しません。 – fyr

1

を試してみて、私は同じ問題を抱えていたし、たくさん苦労した後、私は移動することによってそれを解決外部のテンプレートエンジンを使用しない1.3ベータ版(現在はRC版)をノックアウトしてください。 templateOptionsもサポートしていませんが、それは問題ではありません。私はちょうど私が1.2でtemplateOptionsで渡したものを含むプロパティと他のプロパティとしてメインデータを含むテンプレートのカスタムデータを構築しました。私はdataパラメータでそれを渡し、すべてうまくいった。

+0

'data-bind'の内部に動的バインディングを持つテンプレートをどのように管理したかを示すスタブコードをいくつか投稿してください。 – fyr

+0

私は今晩まではできませんが、それは私の家庭のPCにあり、私は今仕事中です。ダニーあなたのタイムゾーンが、今から6/7時間以内になります。それほど待てば、私は喜んでお手伝いします。 –

+0

もしあなたがとても親切であれば、私はそれを感謝するだろう;)。 – fyr

関連する問題