如何从(init)JSON函数调用(ko.observableArray)?

时间:2015-10-06 13:14:19

标签: javascript json knockout.js

好吧标题令人困惑所以我会给你我的代码来理解我的问题

在淘汰教程中他们使用函数而不是JSON我的意思是这样的:

data = [
  {
    id: 1,
    name: 'somehing'
  },{
    id: 2,
    name: 'somehing else'
  },
]

这是我的问题

var ViewModel = function () {
    var self = this;
    self.dataList = ko.observableArray(data);
    console.log(ViewModel.dataList);
};

在其他网站上,github中的大多数教程和项目都使用JSON

var ViewModel = {
     dataList : ko.observableArray(data),
     init: function() {
      console.log(ViewModel.dataList);
      }
};

这一行

     dataList : ko.observableArray(data),

当我尝试调用 dataList 时,它会返回此

function d(){if(0<arguments.length)return d.Wa(c,arguments[0])&&(d.X(),c=arguments[0],d.W()),this;a.k.Ob(d);return c}

如果我试图获取其值,控制台会告诉我 dataList 未定义

但如果我将数据直接传递给 dataList (这不再是observableArray),它会在控制台中为我提供完整的对象值

     dataList : dataList,

控制台中的返回值

[Object, Object]

如何从 init 函数调用 ko.observableArray

我想像这样关注网络上的教程,但我的问题是一样的。

http://opensoul.org/2011/06/23/live-search-with-knockoutjs/

实际上,不仅 ko.observableArray 数组我也无法调用 ko.observable 对象

1 个答案:

答案 0 :(得分:3)

  

当我尝试调用dataList时,它返回

您的代码没有调用 ViewModel.dataList,它只是访问它,它为您提供了功能(记住observables是函数)。要致电,请添加()

console.log(ViewModel.dataList());
// Note ----------------------^^