如何更新从knockoutjs对象的价值?(How to update value of an ob

2019-10-23 06:32发布

我使用knockoutjs将数据绑定到表,我想在用户点击更新对象。 这里是我的代码

    var Books = [{Book:"Harry Potter",Author:"J.K 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);                     

但是,出现错误:“遗漏的类型错误:字符串是不是一个函数”。 如何解决这个问题?

请参阅: http://jsfiddle.net/jVQY8/8/

Answer 1:

你需要每个的属性Book的对象是一个observable为好。 使用映射插件(即现在内置)为:

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

而且,这是一个有点误导,看看那些this两次当每个指的是不同的对象。 常见的做法是:

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

见小提琴



文章来源: How to update value of an object from knockoutjs?