पीट तत्व से GetModel प्राप्त करें


83

किसी दिए गए DOM तत्व से बाइंडेड ViewModel जावास्क्रिप्ट ऑब्जेक्ट प्राप्त करना संभव है?

ko.applyBindings( gLoginViewModel, document.getElementById("login-form") );
ko.applyBindings( gLoginViewModel, document.getElementById("register-form") );

और कहीं और - बल्कि असंबंधित कोड में - कुछ इस तरह से:

var viewModel = ko.getViewModel( formElement );
viewModel.someObservable( someData ); // observable available in all ViewModels

यह बेहतर होगा अगर मैं ऐसा कुछ कर सकता हूं:

var viewModel = ko.getViewModel( someChildElement );

जवाबों:


138

नॉकआउट में दो उपयोगिता विधियां हैं जो यहां मदद कर सकती हैं।

  • ko.dataFor तत्व के लिए बाध्य है ViewModel वापस आ जाएगी।
  • ko.contextForवर्तमान तत्व का "बाध्यकारी संदर्भ" देता है। इस विधि से वापस मिलने वाली वस्तु कुछ इस तरह वापस आएगी:

    { 
        $data: ...,
        $parents,
        $root
    }
    

इसलिए यदि मैं आपके प्रश्न को समझता हूं, तो आप शायद ko.dataForयहां उपयोग कर सकते हैं। यहाँ एक सरल उदाहरण है का उपयोग कर dataFor


13
अच्छी तरह से वे यहाँ प्रलेखित हैं: knockoutjs.com/documentation/unwellrusive-event-handling.html :)
RP Niemeyer
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.