Knockout.js “数据绑定”;正文:“;对带有参数的函数

Knockout.js “数据绑定”;正文:“;对带有参数的函数,knockout.js,Knockout.js,是否有可能在不通过临时观测值/计算观测值的情况下以任何方式执行以下操作?我有常用数据,用于查找以显示数据: <span data-bind="text: lookupContactName(31)"></span> 从这里叫做。。。(我将其更改为contactId(),并将正确的值传递给函数) 创建者: 我不太清楚您的问题是什么。如果您愿意,您可以这样做: function lookupContactName(cid) { var obj = ... // Fi

是否有可能在不通过临时观测值/计算观测值的情况下以任何方式执行以下操作?我有常用数据,用于查找以显示数据:

<span data-bind="text: lookupContactName(31)"></span>
从这里叫做。。。(我将其更改为contactId(),并将正确的值传递给函数)

创建者:

我不太清楚您的问题是什么。如果您愿意,您可以这样做:

function lookupContactName(cid) {
    var obj = ... // Find your object by id;
    return ko.computed(function () {
       return obj.name() + obj.lastname();
    });
}
它应该可以正常工作。

如果你的
在foreach循环中,那么你需要在方法前面加上$root,否则它会在它正在循环的数组中查找“lookupContactName”

尝试:

创建者:

问题在于查找函数不返回值

ko.utils.arrayForEach(contactList(), function (contact) {
// some checking code
    return contact.fullName();
});
您的“返回”与传递给arrayForEach实用程序方法的内部函数有关。你需要这样的代码

var result;
ko.utils.arrayForEach(contactList(), function (contact) {
// some checking code
    result = contact.fullName();
});
return result;

我只是好奇。。。如果您使用
lookupContactName(contactId)
,那么
lookupContactName
认为它的参数是什么?它是否只获取字符串“contactId”?一般来说,这应该可以工作。你可以把一个JSFIDLE放在一起演示你的问题吗?将lookupContactName(contactId)更改为lookupContactName(contactId()),这将提供正确的id,而不是不返回任何内容。谢谢大家的支持,我得稍微学习一下JSFIDLE,从来没用过它。。。我取得了一点进步,但还是不走运。我会复制粘贴相关代码,希望你能更好地理解。嘿,伙计们,我找到了一个解决方案(旁路)。不明白为什么,但由于某种原因,返回只在数组循环之外工作。。。
function lookupContactName(cid) {
    var obj = ... // Find your object by id;
    return ko.computed(function () {
       return obj.name() + obj.lastname();
    });
}
<div>Creator: <span data-bind="text: $root.lookupContactName(contactId())"></span></div>
ko.utils.arrayForEach(contactList(), function (contact) {
// some checking code
    return contact.fullName();
});
var result;
ko.utils.arrayForEach(contactList(), function (contact) {
// some checking code
    result = contact.fullName();
});
return result;