我正在玩淘汰赛一点点,但我还是坚持不懈。我做了一个例子,你创建了第一个名字,姓氏,然后创建一个ko.computed来创建fullName。这工作正常,但是我们说我有一个可观察的数组,其中包含许多包含名字和姓氏的对象。如何使用计算函数创建全名?如果我创建类似的东西:
function vm() {
....
self.fullName = ko.computed(function() {
return self.names().firstName + "" + self.names().lastName;
}
我无法使用它,因为这是一个viewmodel方法,并且foreach绑定敲除内部会查找本地方法(在本例中为self.names()方法)
也不能使用$ root.fullName因为然后knockout将无法检索正确的值。
答案 0 :(得分:3)
你可以通过将变量分配给你的vm来调用它。喜欢:
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>