içeride $ veri üzerinde iki yönlü bağlayıcı alınıyor. ASP.NET'in dinamik verilerini hiç kullandıysanız: alan şablonlarına benzer. Örneğin:Ben düzenleme ve veri türüne göre salt okunur modu arasında geçiş yapabilmektedir kurulum jenerik Nakavt şablonları çalışıyorum şablon
<script type="text/html" id="text">
<!-- ko if: $root.editable -->
<input type="text" data-bind="value: $data" />
<!-- /ko -->
<!-- ko ifnot: $root.editable -->
<span data-bind="text: $data"></span>
<!-- /ko -->
</script>
Bu böyle kullanılır:
var viewModel = {
name: ko.observable("Brian"),
editable: ko.observable(true)
};
fikri gibi saha düzeyinde şablonları kullanmak mümkün şudur: Şu görünüm modeliyle
<label><input type="checkbox" data-bind="checked: editable" /> Editable</label>
<p>Name: <input data-bind="value: name" /></p>
<p>Name2: <span data-bind="template: { name: 'text', data: name }"></span></p>
"Name2" örneğinde, açık öğeler/denetimler yerine. Bu, tüm formların, çoğunlukla çoğaltılmış işaretlemenin büyük bölümlerine sahip olmadan düzenleme ve okuma modu arasında kolayca değiştirilebilmesini sağlar. Bu aynı zamanda Sorun
şablonu içinde $data
sözde değişken iki yönlü bağlayıcı yoktur vb
, tarih alanları için datepickers kullanarak örneğin, ortak veri türü düzenleme/ekran biçimlendirme yeniden kullanılmasına olanak sağlar. Gözlenebilir olandaki mevcut değeri yansıtacaktır, ancak giriş kontrolündeki değişiklikler değeri ayarlamayacaktır.
nasıl iki yönlü $data
bağlayıcı alabilirim? "O zaman
template: { name: 'text', data: {field: name} }
, "alanına" karşı bağlamak yerine:
Ayrıca bkz this jsfiddle
teşekkür ederiz! Sen Ryan’ın sensin! –
Tek bir soru, belki herkes neden "$ data" ve "$ item" anahtar sözcüklerini kullandığımı - şablonun oluşturulmadığını, ancak ViewModel alan adları tarafından "foreach" öğesinden geçirildiğinde öğelerin iyi çalıştığını bilir. ViewModel kullanıcı dizisi ile (tek ismiyle 'alan'), sonra 'isim' şablonuna bağlanırken, '$ data' veya '$ item' kullanıldığında - çalışamaz. Örneğin, 'çalışmıyor, ancak ' dır, bu yüzden '$ root' a erişemiyorum, $ item, $ data' böyle bir soruna neden olabilir? Teşekkürler – sll
Belki sorununuzu bir jsFiddle'da oluşturabilir misiniz? '$ item' yalnızca jQuery Şablonlarında kullanılabilir. Eğer '$ data' bir nesne ise, o zaman bunu text binding'e iletmek istemezsiniz, 'text: name' ya da' text: $ data.name' (ikinci sözdizimi undefined ile yardımcı olur) yapmak istersiniz. –