2012-06-05 20 views
7

संपादित करें: समस्या बाध्यकारी से संबंधित नहीं है लेकिन एक साधारण जावास्क्रिप्ट गलती से संबंधित नहीं था।knockoutjs foreach बाध्यकारी

मैं एक सवाल एक क्लिक के एक foreach बाध्यकारी भीतर बंधन के विषय में है। मेरे पास मास्टर डेटा से मूल्य का चयन करने के लिए ड्रॉप डाउन बॉक्स दिखाने वाली वस्तुओं के साथ एक सूची है। आइटम को उस सूची से जोड़ा और हटाया जा सकता है। वस्तुओं को हटाने के लिए बटन foreach बाध्यकारी में घोंसला है। इसलिए मुझे उम्मीद थी कि मुझे इसे $ माता-पिता के साथ बांधना चाहिए>

<button data-bind="click: $parent.removeNumber">-</button> 

यह काम नहीं करता है। लेकिन निम्न संस्करण काम करता है:

<button data-bind="click: removeNumber">-</button> 

मुझे समझ में नहीं आता क्यों।

कोड:

<h2>numbers:</h2> 
<ul data-bind="foreach: numbers"> 
    <li> 
     <select data-bind="value: id, 
          options: masterData, 
          optionsText: 'caption', 
          optionsValue: 'id'"></select> 
     <br /> 
     value: <span data-bind="text: id"></span> 
     <br /> 
     <button data-bind="click: $parent.removeNumber">-</button>  
    </li> 
</ul> 
<button data-bind="click: addNumber">+</button> 

function ViewModel() { 
    self.masterData = [{ id: 1, caption: "One"}, 
         { id: 2, caption: "Two"}]; 

    self.numbers = ko.observableArray([{ 
     id: ko.observable(2)}]); 

    self.addNumber = function() { 
     self.numbers.push({ 
      id: ko.observable(2) 
     }); 
    }; 


    self.removeNumber = function(item) { 
     self.numbers.destroy(item); 
     console.log("removed" + item); 
    }; 
} 

var viewModel = new ViewModel(); 
ko.applyBindings(viewModel);​ 

मैं (काम नहीं कर रहा संस्करण के साथ) एक बेला बनाया है: http://jsfiddle.net/delixfe/NWWH8/

आपकी मदद के लिए धन्यवाद।

उत्तर

8

आपने मुझे एक सेकंड के लिए किया था!

आप सही हैं, $parent आवश्यक होना चाहिए। आपकी गलती आपके व्यूमोडेल में self को परिभाषित नहीं कर रही थी। ऐसा करने के बाद, हटाएं बटन पर $parent की आवश्यकता थी, साथ ही साथ masterData बाध्यकारी।

यहां एक कामकाजी पहेली है: http://jsfiddle.net/FpSWb/

+0

ओह। बहुत - बहुत धन्यवाद। – delixfe

+0

jsfiddle काम नहीं कर रहा है – Zypps987

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