【问题标题】:Knockout.js – Getting the Object DataKnockout.js – 获取对象数据
【发布时间】:2012-12-07 00:42:34
【问题描述】:

我刚开始玩淘汰赛,我有一个问题。以下是部分代码:

function Task(data) {
    var self = this;
    self.name = ko.observable(data.name);
}

function ViewModel() {
    self.taskArr = ko.observableArray([
    // some default data
    new Task({ name: "to-do 1"}),
    new Task({ name: "to-do 2"}),
    new Task({ name: "to-do 3"})
]);

基本上,我试图通过console.log() 显示对象的内容。但是当我使用console.log(self.taskArr()); 时,我得到[Task, Task, Task] 结果。

使用self.taskArr()[0].name 只会得到第一个结果,而不是全部。

【问题讨论】:

    标签: javascript arrays knockout.js javascript-objects


    【解决方案1】:

    为了显示可观察数组的数据,您必须使用 ko.toJSON 函数,如下所示:

    console.log(ko.toJSON(self.taskArr()));
    

    将输出:

    [{"name":"to-do 1"},{"name":"to-do 2"},{"name":"to-do 3"}] 
    

    更多信息在这里:http://knockoutjs.com/documentation/json-data.html

    【讨论】:

      【解决方案2】:

      尝试将 Task 对象转换为 JSON 字符串:

          console.log(JSON.stringify(self.taskArr()));
      

      【讨论】:

      • 如果我手动创建一个数组,然后将数据推送到其中,则此方法有效,但通过 Task 函数它返回空白,如下所示:[{},{},{}]
      • 就像您在下面的回答中提到的那样,knockout 似乎有自己的 JSON 编码器,ko.toJSON
      猜你喜欢
      • 2012-04-24
      • 1970-01-01
      • 2021-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多