フォーム入力に使用するテンプレートがあるアプリがあります。
ページには同じ入力/ラベルの複数のバージョンがあるため、入力 ID をハードコーディングすることはできません。
むしろ、attr をバインドするために使用する関数を作成しました (入力の場合は「id」、ラベルの場合は「for」)。
これは Chrome と IE9 ではうまく機能しますが、IE8 と IE7 では失敗します。
ラベルと入力があります:
<label data-bind="attr: {for: doId('name_first')}">First Name*</label>
<input type="text" name="name-first" data-bind="value: name_first, attr: {id: doId('name_first')}" />
私のノックアウトコード:
function MyViewModel() {
var self = this;
self.person_id = ko.observable('1234');
self.name_first = ko.observable();
self.doId = function(seed){
return seed + "-" + self.person_id();
};
}
ko.applyBindings(new MyViewModel());
JsFiddleは IE8 では動作しないようです。そのため、ここにjsbinがあります。
誰でもこれを経験し、回避策がありますか?
入力/ラベルを使用してテンプレートを繰り返すことは、よくある問題です。
-- スコット