javascript - 如何在 knockout.js 中的 foreach 中使用计算方法

标签 javascript knockout.js

我正在玩一些 knockout ,但我遇到了一些问题。我做了一个例子,你创建了名字,姓氏,然后创建一个 ko.computed 来制作全名。这工作正常,但假设我有一个可观察数组,其中包含许多包含名字和姓氏的对象。如何使用计算函数创建全名?如果我创建类似的东西:

function vm() {
....


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

我不能使用它,因为这是一个 viewmodel 方法,并且在 foreach 绑定(bind) knockout 内将查找本地方法(在本例中为 self.names() 的方法)

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

fiddle :http://jsfiddle.net/mtfv6q6a/

最佳答案

你可以通过给你的虚拟机分配一个变量来调用它。喜欢:

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

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

这有效,但总是会返回 undefinedundefined http://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/

关于javascript - 如何在 knockout.js 中的 foreach 中使用计算方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25646285/

相关文章:

javascript - Swipebox - 加载 HTML 而不是图像

javascript - knockout JS : Checking if items in nested sortable were reordered

javascript - 调用 ViewModel 范围之外的函数

javascript - 多个页面需要自动刷新,每个页面上保存不同的选项

javascript - jquery ajax 调用看不到响应数据

javascript - 如何从数据库中检索二进制图像以通过 Ajax 调用查看

javascript - 没有 Node.js 的 Socket.io 客户端

javascript - Knockout JS - 单击加载所选项目的模式编辑表单

javascript - Knockout js模板,过滤可观察数组的第一个元素

带有 knockout 功能的 jQueryUI Spinner 小部件