Knockout.js ko.observableArray()无法正常工作

时间:2018-05-21 14:09:50

标签: javascript knockout.js observable

我不确定为什么这对任何人都没有帮助?

我有这个简单的对象数组:

     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 :(得分:0)

似乎在初始化对象时,您正在为其分配值,这是另一个键的关键之一。在您的指定代码段中,this指的是myItems键不存在且返回undefined的全局对象。 尝试在浏览器中执行var a = {b: 1, c: this.b}。这将返回{ b: 1, c: undefined }

但我的问题是,您为什么要单独保留myItems并且不想将其值直接传递给ko.observableArray函数? 因为以后你只想处理allItems因为它是可观察的,而不是myItems