2013-07-17 7 views
7

नॉकआउट 2.3.0 optionsAfterRender बाध्यकारी के साथ अक्षम किया गया है ताकि विकल्पों को काफी लचीला रूप से बदला जा सके।नॉकआउट अक्षम विकल्प विकल्प कैप्शन

मैं विकल्प कैप्शन को अक्षम करना चाहता हूं। फिलहाल मैं

<select data-bind="options: items, optionsCaption:'please select', optionsAfterRender: function(option, item) { ko.applyBindingsToNode(option, {disable: !item}, item); }"></select> 

जो काम करता है कर रहा हूँ, लेकिन मैं कॉपी और optionsAfterRender समारोह हर जगह चस्पा करने के लिए किया है। मैं एक कस्टम बाध्यकारी हैंडलर को एक स्थान पर करने की कोशिश कर रहा हूं, लेकिन मुझे कठिनाई हो रही है।

ko.bindingHandlers.disableOptionsCaption = { 
    init: function (element) { 

     ko.applyBindingsToNode(element, { 
      optionsAfterRender: function (option, item) { 

       ko.applyBindingsToNode(option, { 
        disable: !item 
       }, item); 

      } 
     }); 

    } 
}; 

I've also created a fiddle here that shows the working version and non-working. किसी भी मदद की सराहना की जाएगी: यह मेरा bindingHandler अब तक है!

उत्तर

3

आप एक साथ सभी बाइंडिंग लागू नहीं करना चाहिए इस तरह, चरण दर चरण:

एचटीएमएल

<select data-bind="disableOptionsCaption:{}"></select> 

जे एस

ko.bindingHandlers.disableOptionsCaption = { 
    init: function (element,valueAccessor, allBindingsAccessor, viewModel) { 

     ko.applyBindingsToNode(element, { 
      options: viewModel.items, 
      optionsCaption: 'please select', 
      optionsAfterRender: function (option, item) { 

       ko.applyBindingsToNode(option, { 
        disable: !item 
       }, item); 

      } 
     }); 
    } 
}; 
संबंधित मुद्दे