Javascript 如何在knockout.js中的foreach内部使用computed方法

Javascript 如何在knockout.js中的foreach内部使用computed方法,javascript,knockout.js,Javascript,Knockout.js,我在玩击倒赛,但我被一些东西卡住了。我做了一个例子,创建了名字和姓氏,然后创建一个ko.computed来生成全名。这很好,但是假设我有一个可观察的数组,其中有很多包含名字和姓氏的对象。如何使用computed函数创建全名?如果我创建如下内容: function vm() { .... self.fullName = ko.computed(function() { return self.names().firstName + "" + self.names().lastName; }

我在玩击倒赛,但我被一些东西卡住了。我做了一个例子,创建了名字和姓氏,然后创建一个ko.computed来生成全名。这很好,但是假设我有一个可观察的数组,其中有很多包含名字和姓氏的对象。如何使用computed函数创建全名?如果我创建如下内容:

function vm() {
....


self.fullName = ko.computed(function() {
  return self.names().firstName + "" + self.names().lastName;
}
我不能使用它,因为这是一个viewmodel方法,在foreach绑定敲除中会查找本地方法(在本例中,是self.names()的方法)

也不能使用$root.fullName,因为这样敲除将无法检索正确的值


Fiddle:

您可以通过将变量分配给vm来调用它,例如:

    appModel = new vm();
    ko.applyBindings(appModel);

就这样说吧

<h3 data-bind='text: appModel.returnFullName($data); '></h3>


确实有效,但在本例中,我可以只执行$root.returnFullName($data)。感谢您的理解,您不会调用计算函数,当包含可观察到的更改时,计算函数会自动调用,因此感谢JSFIDLE——通过您的示例,我能够让代码正常工作。顺便说一句,在循环中,如果您不想像第一步那样为模型分配变量(“appModel”),可以调用$parent.fullName()。不客气,很高兴这有帮助。您对“$parent”的理解也是正确的,但是将其分配给变量对于其他一些原因是有用的,假设您想要
console.log()
所有名称(无数据绑定,只需脚本),您可以通过
console.log(appModel.names())
self.returnFullName = function(item) {
    return item.firstName + " " + item.lastName;
};
<h3 data-bind='text: appModel.returnFullName($data); '></h3>