2016-06-13 4 views
0

データがロードされたときに行にid row_##というIDを使用する必要がありますが、それを引き出す方法を見つけるのが困難です。knockout.jsを使用してテーブルの行ID属性を設定する

私はHTMLのために使用していたコードされています。基本的に私は、各テーブル行のidは、JSONレスポンスから「id」の値によって置き換えられ##row_##になりたい

<tbody data-bind="foreach: deliveryItems"> 
    <tr data-bind="attr: {id: \'row_\' + id }"> 

私は完全なサンプルコードとJSフィドルを作りました:https://jsfiddle.net/spyke01/kzcr5Lph/

+0

を別にバックスラッシュ文字と構文エラーから、あなたが投稿したコードは、[だけで正常に動作](https://jsfiddle.net/y2qbueur/1/ ) 私の知る限り? jsfiddleには、他にもたくさんのことが起こっています。あなたは質問を更新し、コードを[mcve]に少し拡張することができますか? – Jeroen

答えて

-1

私はこれを理解することができました。私はこれを使用しなければならなかった:

<tbody data-bind="foreach: deliveryItems"> 
    <tr data-bind="attr: {id: \'row_\' + $data.id }"> 
+0

これはまだ動作しません。問題は、文字列の外側で引用符をエスケープしていることです。エスケープ文字は、文字列内で引用文字を使用する場合にのみ意味があります。すべての 'deliveryItems'が' id'プロパティを持っていれば、 '$ data.id'と' id'の間に違いはありません。 – user3297291

+0

これは正しく動作します。私はなぜIDが私に以前に問題を与えているのか分からないが、おそらく私の側のバグだった。 – spyke01

2

閉じる - これは以下の通りです。

<tbody data-bind="foreach: deliveryItems"> 
    <tr data-bind="attr: {id: 'row_' + id }"> 
+0

これは私のためには機能しませんでしたが、これはそうでした: – spyke01

0

私はあなたがHTML文書内data-bind属性を作成

は、属性値は、単一または二重引用符のいずれかに囲まれなければなら...あなたはあなたの文字列を脱出しようとして混乱しましたと思います。

<div data-bind=""></div> 

さて、引用符の間のすべてがノックアウトで抽出し、それはjavascriptのの抜粋であるかのよう評価されます。だから、あなたが慣れているすべてのことをすることができます。ここで文字列を入力したい場合は、同じ引用符の型を使用すると、HTMLパーサーは属性値の引用符を終了したとみなします。例えば:

<div data-bind="text:"hello""></div> 

は値なしdata-bind="text:"属性と値の組み合わせとhello属性を持つ<div>を作成します。

HTMLは\エスケープ文字では機能しないため、これらの引用符をエスケープすることはできません。例:

<input type="text" placeholder="hello \"world\""> 

プレースホルダーhello \が表示されます。あなたは属性の値属性の周りだけでなく、で二重引用符を入れたい場合は、あなたが今&quot;

<input type="text" placeholder="hello &quot;world&quot;"> 

を使用する必要があります、幸いにも、両方の引用符の2種類がありますHTMLおよびJS仕様はを許可します。つまり、内部で二重引用符を使用する場合は、属性値の前後に一重引用符を使用できます。すでに他の回答で与えられるように、easies溶液に私たちをもたらします

<tbody data-bind="foreach: deliveryItems"> 
    <tr data-bind="attr: {id: 'row_' + id }"> 
</tbody> 

は、あなたがあなたのid文字列内'文字を使用したい場合にのみ、あなたがする必要があるだろう\'を使用してください。例えば。:

attr: { id: 'row\'_' + 12 } 

あなたを与えるだろう:

id="row'_12" 
関連する問題