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