2012-06-29 30 views
5

का उपयोग करके प्लगइन में" बाइंडिंग पार्स करने में असमर्थ "मैंने एक knockoutjs प्लगइन बनाया है जो अंत में इसके बाध्यकारी हैंडलर के" अद्यतन "भाग में ko.renderTemplate का उपयोग करता है। कोड अपेक्षित आउटपुट उत्पन्न करता है लेकिन "बाइंडिंग पार्स करने में असमर्थ" त्रुटि भी फेंकता है।knockoutjs "kind.renderTemplate

इस समस्या का पुनरुत्पादन यहां http://jsfiddle.net/rhoadsce/VSWK2/ jsfiddle पर पाया जा सकता है।

जावास्क्रिप्ट इस प्रकार है:

ko.plugin = function(configuration) { 
    var self = this; 
    self.content = configuration.content || ''; 
}; 

ko.bindingHandlers.plugin = { 
    update: function(element, valueAccessor, allBindingsAccessor) { 
     var viewModel = valueAccessor(); 

     $(element).append('<div id="pluginContainer"></div>'); 
     var $container = $(element).children('#pluginContainer'); 

     ko.renderTemplate("pluginTemplate", viewModel, {}, $container, 'replaceNode'); 
    } 
}; 

$(function() { 
    var vm = (function() { 
     var plugin = new ko.plugin({ content: 'test content'}); 

     return { 
      plugin: plugin 
     } 
    })(); 

    ko.applyBindings(vm); 
}); 

एचटीएमएल समान रूप से के रूप में सरल है।

<div data-bind="plugin: plugin"></div> 

<script id="pluginTemplate" type="text/html"><span data-bind="text: content"></span></script> 
+3

+1: कोड, एक बेला, अपने दम पर सफल होने के लिए स्पष्ट प्रयास करता है, और एक दिलचस्प मुद्दा। उत्कृष्ट पहला सवाल, स्टैक ओवरफ़्लो में आपका स्वागत है – Tyrsius

उत्तर

4

मुझे लगता है कि मुद्दा यह है कि KO div के वंशजों के लिए बाइंडिंग लागू करने के लिए कोशिश कर रही है (और यह भीतरी प्लगइन वी एम के बजाय संदर्भ के रूप में जड़ viewmodel के साथ इस करता है,), लेकिन कॉल करने के लिए अपने आप को पहले से ही ko.renderTemplate वंशजों (सही संदर्भ के साथ) को बाइंडिंग लागू करता है।

इसे रोकने के लिए, अपने बाध्यकारी हैंडलर की init विधि वापसी { controlsDescendantBindings: true }। यह केओ को बाइंडिंग लागू करने की कोशिश करने से रोकता है। Here's the updated fiddle

अतिरिक्त जानकारी के लिए यहाँ देखें: http://knockoutjs.com/documentation/custom-bindings-controlling-descendant-bindings.html

+0

धन्यवाद! वह चाल है। – rhoadsce

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

  • कोई संबंधित समस्या नहीं^_^