2011-10-03 4 views
6

Bir JS değeri değiştirilirse DOM'ı güncelleştirmek için KnockoutJS kullanıyorum (Knockout bize bu işlevleri verir).Varolan DOM öğelerini bir KnockoutJS görünümModel'e bağlama

Nakavt ViewModel aşağıdaki bloğu gibi görünür varsayılan: fiyat değişiklikleri, görünümü otomatik Knockout tarafından güncellendiğinde Şimdi

<span data-bind="text: price"></span> 

:

Javascript:

var viewModel = { 
    price: ko.observable(109) 
} 

Html .. Ama sahip olmak istiyorum:

var viewModel = { 
    price: ko.observable(jQuery("#price")) 
} 

<span id="price">99.00</span> 

Dolayısıyla, bir DOM öğesini viewModel cihazıma bağlamak istiyorum. Modeldeki fiyat özelliği 99.00 değeriyle başlatıldı. Fiyat değiştiğinde (Javascript'te) #price'nin DOM değeri de güncellenmelidir.

Umarım soru sizin için açıktır.

Zaman ayırdığınız için çok teşekkürler! Bu her şey güncelleyecek bir bağımlı gözlemlenebilir

var viewModel = { 
    price: ko.observable(109) 
} 

viewModel.priceElement= ko.dependantObservable(function(){ 
    viewModel.price(); 
    return jQuery("#price"); 
}) 

kullanılarak

+1

Doğru anlıyorsam, hayır. Hala 'data-bind' satır içi kullanmanız gerekecektir. – namuol

cevap

6

görünümünüz modeli başlatılması. Bunu yerine:

jQuery("#price").text('some new value'); 

.. Eğer

viewModel.price('some new value'); 

Bu yaklaşım daha MVVM desen doğrultusunda olacağını ... yazabilirim.

+0

Harika çalışıyor, teşekkürler! – NickGreen

2

deneyin bedelini değiştirin. Eğer modeli değil, görünüm güncellemek için javascript kullanarak gerektiğini sonra

var viewModel = { 
    price: ko.observable(jQuery("#price").text()) 
} 

<span id="price" data-bind="text: price">99.00</span> 

şu şekildedir: