2011-10-03 10 views
6

यदि कोई जेएस मान बदलता है तो डॉक अपडेट करने के लिए मैं नॉकआउटजेएस का उपयोग कर रहा हूं (नॉकआउट हमें यह फ़ंक्शन देता है)।मौजूदा डीओएम तत्वों को नॉकआउटजेएस व्यू में कैसे बाध्य करें मॉडल

एक डिफ़ॉल्ट नॉकआउट ViewModel निम्नलिखित ब्लॉक तरह दिखता है: जब मूल्य परिवर्तन, दृश्य स्वचालित रूप से नॉकआउट द्वारा अद्यतन किया जाता है

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

अब:

जावास्क्रिप्ट:

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

एचटीएमएल .. लेकिन मैं जो चाहता हूं वह निम्नलिखित है:

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

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

तो, मैं अपने विचार मॉडल में एक डोम तत्व बांधना चाहता हूं। मॉडल में मूल्य विशेषता 99.00 के मूल्य के साथ शुरू की गई है। जब कीमत बदल जाती है (जावास्क्रिप्ट में) #price के DOM मान को भी अपडेट किया जाना चाहिए।

मुझे आशा है कि प्रश्न आपके लिए स्पष्ट है।

धन्यवाद आपके समय के लिए बहुत कुछ!

+1

यदि मैं सही ढंग से समझता हूं, नहीं। आपको अभी भी 'डेटा-बाइंड' इनलाइन का उपयोग करने की आवश्यकता होगी। – namuol

उत्तर

6

आपका दृश्य मॉडल के रूप में निम्नानुसार प्रारंभ किया जाना चाहिए। तो बजाय:

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

.. आप लिख दिया जाना चाहिए ...

viewModel.price('some new value'); 

यह दृष्टिकोण MVVM पैटर्न के साथ ध्यान में रखते हुए अधिक होगा।

+0

महान काम करता है, धन्यवाद! – NickGreen

2

कोशिश एक आश्रित नमूदार

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

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

का उपयोग कर यह हर अपडेट करेगा आप मूल्य बदल जाते हैं।

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

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

आप जावास्क्रिप्ट का उपयोग करना चाहिए मॉडल, नहीं दृश्य को अपडेट करें उसके बाद:

संबंधित मुद्दे