【发布时间】:2014-01-21 22:52:42
【问题描述】:
我有一个 ViewModel,它是一个可观察的对象数组,其中包含我将使用 foreach 输出的联系人信息。我需要有一个依赖于每个联系人的firstName 和lastName 的计算观察值:
var contacts = ko.observableArray([
{
firstName: ko.observable("Jim"),
lastName: ko.observable("Carrey"),
fullName: ko.computed(function(){
return this.firstName() + " " + this.lastName();
}, this),
image: ko.observable("images/jim.jpg"),
phones: ko.observableArray([
{type: ko.observable("Mobile"), number: ko.observable("(555) 121-2121")},
{type: ko.observable("Home"), number: ko.observable("(555) 123-4567")}
])
},
...//other objects of the same structure
]);
ko.applyBindings(contacts);
但我收到此错误Uncaught TypeError: Object #<HTMLDocument> has no method 'firstName'。有人可以解释为什么我对 this.firstName() 的引用失败了吗?谢谢。
【问题讨论】:
-
在 obs 数组中使用计算函数的任何原因?
-
我正在构建一个可以编辑名字和姓氏的应用程序,因此他们必须更新 UI 以反映更改
-
我也不是淘汰赛专家。但是你能在你的 obs 数组中删除计算函数并拥有单独的计算函数吗?我创建了小提琴,但不知何故出错。如果你能修复那么应该为你工作jsfiddle.net/kD83g/12
-
我可以要求downvoter在否决问题时添加评论。