2013-01-06 16 views
5

पर क्लिक करने का प्रयास कर रहा हूं कि मैं निम्नलिखित उदाहरण क्यों काम नहीं कर रहा हूं।देखने योग्य आइटम में आइटम जोड़ना jQuery बटन पर दृश्य अपडेट नहीं करना

अवलोकन योग्य तब तक अपडेट नहीं किया जाता है जब तक कि यह मैन्युअल रूप से नहीं बताया जाता है कि यह बदल गया है (valueHasMutated() का उपयोग करके)।

मैंने सोचा कि अवलोकनों का पूरा बिंदु यह था कि जब यह बदल गया तो दृश्य स्वचालित रूप से अपडेट हो गया।

<button type='button' id='add'>add</button> 
<button type='button' id='mutated'>force update</button> 
<div id="short_tasks" data-bind="foreach: list"> 
    <div data-bind="text: title"></div> 
</div> 

जे एस:

var ListTest = function() { 

    this.list = ko.observableArray([{title: 'item1'}]); 
} 

var viewModel = new ListTest(); 
ko.applyBindings(viewModel); 

$('#add').click(function() { 
    viewModel.list().push({title: 'new item'}); 
}); 

$('#mutated').click(function() { 
    viewModel.list.valueHasMutated(); 
}); 

jsFiddle: http://jsfiddle.net/InsaneWookie/HFgbR/

उत्तर

9

आप observableArray पर सीधे push कॉल करने के लिए है, जो अंतर्निहित सरणी के लिए अपना आइटम धक्का और किसी भी ग्राहकों को सूचित करेंगे चाहते हैं।

viewModel.list.push({title: 'new item'}); 
+0

अरे, धन्यवाद, पूरी तरह से काम किया। मुझे पता था कि मुझे कुछ याद आना चाहिए था। – Rowan

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