2013-01-06 14 views
5

Próbuję zrozumieć dlaczego poniższy przykład nie działa.Dodawanie elementu do obserwowaniaArray nie aktualizuje widok na przycisku jQuery Kliknij

ObservableArray nie jest aktualizowany do momentu ręcznego powiadomienia o jego zmianie (za pomocą valueHasMutated()).

Myślałem, że cały punkt obserwowalnych był taki, że po zmianie widok jest automatycznie aktualizowany.

<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> 

JS:

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/

Odpowiedz

9

Będziemy chcieli, aby zadzwonić push bezpośrednio na observableArray, który pchnie swój przedmiot do podstawowej tablicy i powiadomić żadnych abonentów.

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

Cholera, dzięki, działało idealnie. Wiedziałem, że czegoś mi brakowało. – Rowan

Powiązane problemy