2017-09-05 76 views
0

我有一个简单的页面,其中包含一个筛选器按钮,用于选择用户列表和另一个按钮,以查看包含用户列表的PDF。Knockout.JS“变量不是函数”

当我直接点击查看PDF页面加载正确。 当我过滤页面,然后运行相同的查看PDF按钮,我留下了“user.userID()不是一个函数”

在这两种情况下,我打到下面的代码,为什么我得到一个过滤后出现错误?

for user in viewModel.users() 
    if user.isChecked() 
     tempusers += user.userID() + ',' 
+0

是user.userID一个可观察?根据错误信息,我猜想它不是。 –

+0

我有self.users = ko.observableArray([]),你必须声明数组中的所有元素才能使用它们吗? –

+0

如果你想让他们成为可观察者,你确实需要声明他们。你的代码可能在没有'()'的情况下工作。 –

回答

0

敲除observables是函数,因此您需要使用括号()才能访问该值。如果您的用户设置为self.users = ko.observableArray([]),那么用户的集合(self.users)是可观察的,您将在该对象发生某些情况时看到更改和内容。集合中包含的对象(以及这些对象的属性)不是自动观察对象,您必须在向对象添加对象时以此方式进行设置。

您应该能够访问一个“用户”的对象和它的属性没有括号,如果它是不可观测的,就像这样:

for user in viewModel.users() 
    if user.isChecked 
     tempusers += user.userID + ',' 

如果你的“用户”是观察的和属性中的“用户'是可观察的,那么你可能需要这样做:user().isChecked();