¿Cómo actualizar el valor de un objeto desde knockoutjs?

Estoy usando knockoutjs para enlazar datos a la tabla, y quiero actualizar el objeto cuando el usuario haga clic. Aqui esta mi codigo

var Books = [{Book:"Harry Potter",Author:"JK rowling"},{Book:"5 Point Someone",Author:"Chetan Bhagat"},{Book:"I too had a love story",Author:"Ravinder Singh"}]; var appViewModel = function() { this.firstName = ko.observable("Amit"); this.Books = ko.observableArray([]); this.Books(Books); this.updateBook = function() { this.Book("Harry Potter and Prisoner of Azkaban"); } }; ko.applyBindings(appViewModel); 

Pero aparece el error: “Error de tipo no capturado: la cadena no es una función”. ¿Cómo se puede arreglar?

Consulte: http://jsfiddle.net/jVQY8/8/

Necesita que las propiedades de cada uno de los objetos de su Book sean también observable . Use el complemento de mapeo (que ahora está integrado) para eso:

 this.Books = ko.mapping.fromJS(Books); 

Además, es un poco engañoso verlos dos veces cuando cada uno se refiere a un objeto diferente. El enfoque común es:

 this.updateBook = function(book) { book.Book("Harry Potter and Prisoner of Azkaban"); }; 

Ver violín