2013-01-23 9 views
42

knockout.jsのdata *属性に問題があります。 attrでそれらを書き出します。knockoutjs attrを使ってデータを書き込む*属性

私は問題なくこれを行うことができます:

<input data-bind='text: Title, attr: {name: "Events[" + viewModel.events.indexOf($data) + "].Title"}'/> 

を私はdata-idを使用する場合は、通常の方法では、私は、属性の周りの単一引用符置くので動作しません:

<input data-bind='text: Title, attr: {'data-id': "Events[" + viewModel.events.indexOf($data) + "].Title"}'/> 

私には

Error: Unable to parse bindings. 
Message: SyntaxError: missing } in compound statement; 
Bindings value: attr: { 
http://127.0.0.1:21254/Scripts/knockout/knockout-2.2.0.js 

誰かがここで間違っているのを見ることができますか?

乾杯!あなたはそれを二重引用符で囲むを配置する必要があり

答えて

78

:以下

<input data-bind='text: Title, attr: {"data-id": "Events[" + viewModel.events.indexOf($data) + "].Title"}'/> 
+0

これは、おかげです。 – MikeW

+1

@Michael Best:ありがとう、あなたは私が関連する問題を解決するのを手伝った。 – Phil

+0

一重引用符 'も動作します。 – Andrew

0

は、カスタムデータを設定する方法を説明する作業スニペットはノックアウトで属性値をされています

ko.applyBindings({ 
 
    somevalue: 'foo', 
 
    title: 'Knockout custom data attribute binding -- example' 
 
}); 
 

 
$("#result").text($("#test-el").data("someattr"));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> 
 

 
<div data-bind="text: title, attr: {'data-someattr': somevalue}" id="test-el"></div> 
 

 
<p> 
 
    <b>Test data attribute expected value:</b> foo 
 
</p> 
 

 
<p> 
 
    <b>Test data attribute value: </b> 
 
    <span id="result"></span> 
 
</p>

0

あなたはattr名の前後に二重引用符または一重引用符を入れる必要はなく、単にdata-id

<input data-bind='text: Title, attr: {data-id: "Events[" + viewModel.events.indexOf($data) + "].Title"}'/> 
関連する問題