如何清除淘汰可观察阵列?

时间:2015-01-21 20:36:20

标签: javascript arrays knockout.js knockout-2.0 observable

我正在尝试在我的视图模型中重置一个knockout observable数组,以便不包含任何东西,但我在每一个回合都被镶嵌着石墙。定义后,我将其设置为空:

self.currentPeople = ko.observableArray([]);

然而,如果我试图在页面上改变它:

self.currentPeople.removeAll();

我得到例外:

Uncaught TypeError: undefined is not a function

即使我进行安全检查以确定它是否存在然后进行设置:

 if (self.currentPeople ) {
       self.currentPeople.removeAll();
 } else {
       self.currentPeople = ko.observableArray([]);
 }  

我仍然收到同样的错误。我做错了什么?

2 个答案:

答案 0 :(得分:1)

如果通过包含任何内容并且清除数组,则表示只包含一个空数组:

self.currentPeople([]);

旁注,用

进行测试
if(someObservable)

将始终返回true,以测试它是否包含任何使用" someObservable()"。这将获得observables值而不是包装器。 我很困惑,但是self.currentPeople.removeAll()会抛出一个错误,如果上面的解决方案不适合你,你可以发布更多的代码,并澄清你需要什么吗?

我知道这个答案的一半应该是一个评论,但我还没有代表这样做。

答案 1 :(得分:-1)

您需要' de-reference'你的可观察数组是self.currentPeople().removeAll()