【问题标题】:how can I call the (ko.observableArray) from (init) JSON function?如何从 (init) JSON 函数调用 (ko.observableArray)?
【发布时间】:2016-01-03 10:19:45
【问题描述】:

标题很混乱,所以我会给你我的代码来理解我的问题

在淘汰教程中,他们使用函数而不是 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 未定义

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

     dataList : dataList,

控制台中的返回值

[Object, Object]

如何从 init 函数调用 ko.observableArray

我想像这样在网络上学习教程,但我的问题是一样的。

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

其实不只是 ko.observableArray 数组,我也不能调用 ko.observable 对象

【问题讨论】:

    标签: javascript json knockout.js


    【解决方案1】:

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

    您的代码不会调用 ViewModel.dataList,它只是访问它,它为您提供了函数(记住 observables 是函数)。要调用它,请添加()

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

    【讨论】:

      猜你喜欢
      • 2015-10-24
      • 1970-01-01
      • 1970-01-01
      • 2021-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-18
      • 2022-11-02
      相关资源
      最近更新 更多