简体   繁体   中英

how can I call the (ko.observableArray) from (init) JSON function?

Well the title is confusing so I'll give you my code to understand my problem

in knockout tutorials they use functions instead of JSON I mean like this:

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

here is my problem

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

while on other websites and most of tutorials and projects in github uses JSON

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

this line

     dataList : ko.observableArray(data),

when I try to call dataList it return this

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}

and If I try to get its value console will tell me that dataList is not defined

but if I pass data directly to dataList like this (Which is not observableArray anymore) it will give me the full objects values in console

     dataList : dataList,

the return value in console

[Object, Object]

how can I call the ko.observableArray from init function?

I want to follow the tutorials on the web like this one but my issue is the same.

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

Actually it's not only ko.observableArray arrays also I cannot call ko.observable objects

when I try to call dataList it return this

Your code doesn't call ViewModel.dataList , it just accesses it, which gives you the function (remember observables are functions). To call it, add () :

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM