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