Knockout.js ko.observableArray () не работает должным образом - PullRequest
0 голосов
/ 21 мая 2018

Я не уверен, почему это не работает, кто-нибудь может помочь?

У меня есть этот простой массив объектов:

     myItems: [
       {value: 0, text: 'a'},
       {value: 1, text: 'b'},
       {value: 2, text: 'c'}
     ],


allItems: ko.observableArray(this.myItems),

console.log(this.allItems()); THIS DOES NOT WORK???

выше не работает?

Теперь ниже приведен только жестко заданный массив myItems:

allItems: ko.observableArray([
       {value: 0, text: 'a'},
       {value: 1, text: 'b'},
       {value: 2, text: 'c'}
     ]),

console.log(this.allItems()); //THIS NOW WORKS 

Какая разница, поскольку я не вижу ничего, когда регистрирую оба:

console.log('this is al allItems: '+this.allItems())
console.log('this is my myItems: '+myItems());
this is al allItems: (3) [{…}, {…}, {…}]
this is my myItems: (3) [{…}, {…}, {…}]

Любая помощь Пожалуйста! Оцените.

1 Ответ

0 голосов
/ 21 мая 2018

Похоже, что при инициализации объекта вы присваиваете значение его одного ключа другому ключу.в данном фрагменте this относится к глобальному объекту, в котором нет ключа myItems, и возвращает undefined.Попробуйте сделать var a = {b: 1, c: this.b} в вашем браузере.это вернет { b: 1, c: undefined }.

Но мой вопрос: почему вы хотите хранить myItems отдельно и не хотите передавать его значение непосредственно в функцию ko.observableArray?потому что позже вы захотите иметь дело только с allItems, как это можно наблюдать, а не с myItems.

...