首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用数据初始化observableArray

使用数据初始化observableArray
EN

Stack Overflow用户
提问于 2015-06-04 11:41:19
回答 1查看 4.8K关注 0票数 1

通过这种方式,我试图在声明时使用数据初始化observableArray,但是给出了错误TypeError: this.Book is not a function

这里是jsFiddle链接http://jsfiddle.net/jVQY8/11/

代码语言:javascript
复制
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(Books);
            this.updateBook = function() {
                this.Book("Harry Potter and Prisoner of Azkaban");
            }
        };

当我试图以这种方式初始化可观测数组时,this.Books = ko.observableArray(Books);抛出错误TypeError: this.Book is not a function

但是,当我以这种方式初始化可观测数组的时候,this.Books = ko.mapping.fromJS(Books);就可以正常工作了。

所以任何人都可以告诉我这是怎么回事初始化代码this.Books = ko.observableArray(Books);

有人能帮我解答一下这个问题吗?这样我就能理解下面这两种方法的区别了。

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

2) this.Books = ko.observableArray(Books);

告诉我当这行执行this.Books = ko.mapping.fromJS(Books);时内部会发生什么

以及当这一行执行this.Books = ko.observableArray(Books);时内部发生了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-04 11:50:45

当您使用this.Books = ko.observableArray(Books)时,唯一可以观察到的就是数组本身,因此试图设置一个属性(如Book),就像它是可观察的一样,自然会失败。

当使用this.Books = ko.mapping.fromJS(Books)时,数组中的每个对象和每个字段都会变成一个可观察的对象,这就是this.Book('New title')工作的原因。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30642925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档