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

How to use computed method inside foreach in knockout.js

本文关键字:computed 方法 foreach 中的 knockout js      更新时间:2023-09-26

我有点玩淘汰赛,但我遇到了一些问题。我做了一个例子,你创建了名字,姓氏,然后创建了一个ko.computed来生成fullName。这还可以,但假设我有一个可观察的数组,其中有很多包含名字和姓氏的对象。如何使用计算函数来创建全名?如果我创建了类似的东西

function vm() {
....

self.fullName = ko.computed(function() {
  return self.names().firstName + "" + self.names().lastName;
}

我不能使用它,因为这是一个视图模型方法,在foreach绑定敲除中会查找本地方法(在本例中,是self.names()的方法)

也不能使用$root.fullName,因为那样敲除将不会检索到正确的值。

Fiddle:http://jsfiddle.net/mtfv6q6a/

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

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

    <h3 data-bind="text: appModel.fullName()"></h3>

这是有效的,但总是返回undefinedundefinedhttp://jsfiddle.net/mtfv6q6a/1/因为firstName不是names()的属性

你需要一些简单的功能,比如:

self.returnFullName = function(item) {
    return item.firstName + " " + item.lastName;
};

并称之为

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

http://jsfiddle.net/mtfv6q6a/2/