Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从knockoutjs更新对象的值?_Javascript_Jquery_Knockout.js - Fatal编程技术网

Javascript 如何从knockoutjs更新对象的值?

Javascript 如何从knockoutjs更新对象的值?,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,我使用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() {

我使用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);                     
但它得到了一个错误:“uncaughttypeerror:string不是一个函数”。你怎么能修好它


请参阅:

您需要每个
书籍
对象的属性也是一个
可观察的
。使用插件(现在是内置的)实现以下功能:

this.Books = ko.mapping.fromJS(Books);
另外,当这些
都指向不同的对象时,两次看到这些
这个
,也有点误导。通常的做法是:

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

请参见

是,它不是一个函数,因为它是一个平面json数据。但我选择删除我的答案并投票结束你的问答。看起来你在寻找一个编码服务而不是解决问题。我们需要您的努力。只需使用这个应该可以很好地工作。Cheers我正在学习knockout js。我有一个问题,这个函数的作用是什么
ko.mapping.fromJS()
?Books变量已存储json。我们不能声明Books-observearray并初始化相同的位置,比如
this.Books=ko.observearray([ko.mapping.fromJS(Books)])
我尝试了此代码,但出现了错误。因为
Books
已经是一个对象数组,
ko.mapping.fromJS
将其转换为这些对象的
observearray
。因此,在您的行中,您最终得到了包含另一个
observableArray
observableArray
。那么我们可以试试这个吗?Books=ko.observable(ko.mapping.fromJS(Books))?这条线也是这样吗?@Thomas,你还是会得到同样的结构。另外,您的第一个代码段实际上比我想象的嵌套得更多,这实际上会创建两个嵌套数组。