首页 > 解决方案 > Knockout.js ko.observableArray() 无法正常工作

问题描述

我不确定为什么这不起作用有人可以帮忙吗?

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

     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) [{…}, {…}, {…}]

任何帮助请!欣赏。

标签: javascriptknockout.jsobservable

解决方案


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

但我的问题是,为什么要myItems分开保存,又不想将它的值直接传递给ko.observableArray函数呢?因为以后你只想处理allItems它是可观察的,而不是myItems.


推荐阅读