gpt4 book ai didi

knockout.js - KO 数据绑定(bind) "text:"到带有参数的函数

转载 作者:行者123 更新时间:2023-12-04 08:36:02 25 4
gpt4 key购买 nike

是否有可能以任何方式执行以下操作而不必通过临时可观察对象/计算可观察对象?我有用于查找以显示数据的通用数据:

<span data-bind="text: lookupContactName(31)"></span>

结果:函数执行完毕,找到参数,逻辑ok,返回计算全名,但不显示(可能是因为没有observable)
<span data-bind="text: lookupContactName(contactId)"></span>

结果:没有解析contactId,因此看不到正确的参数值。

我想为了让它正常工作,我需要创建自定义绑定(bind)?

一般来说:我开始怀疑我只加载一次数据并尝试匹配 id 的方法是否是一个好方法。有什么意见吗?我更擅长创建连接的数据库表/ View /SP?

谢谢,
J。

在这里,是我正在使用的相关代码片段......我将学习 jsfiddle 以获得 future 的帮助。

ALL ALERT 正在返回预期值...但文本数据绑定(bind)仍然没有收到值

一个通用的数据库:
customers.Contact = function () {
var self = this;

id = ko.observable();
title = ko.observable();
givenname = ko.observable();
surname = ko.observable();
fullName = ko.computed(function () {
return title()+". "+givenname()+" "+surname();
});

return {
id: id,
title: title,
givenname: givenname,
surname: surname,
fullName: fullName
};
};
customers.ContactList = function () {

var self = this;

contactList = ko.observableArray([]); //.publishOn("ContactList");

loadContactData = function () {
var self = this;

customers.helperDataService.getContactData(loadContactDataCallBack);
};

loadContactDataCallBack = function (json) {
var self = this;

$.each(json, function (i, p) {

var contact = new customers.Contact().id(p.Id)
.title(p.Title)
.givenname(p.Name)
.surname(p.Surname);

contactList.push(contact);
});

};

lookupContactName = function (id) {
var self = this;

alert("value to be found: "+id);

ko.utils.arrayForEach(contactList(), function (contact) {
alert("SEARCH: contactid: " + contact.id() + " - " + "id: " + id);
if (contact.id() === id) {
alert("FOUND: contactid: " + contact.id() + " - " + "id: " + id);
alert("value:" + contact.fullName());
return contact.fullName();
}
});
};

return {
loadContactData: loadContactData,
lookupContactName: lookupContactName
};
};

从这里调用...(我将其更改为 contactId() 并将正确的值传递给函数)
<div>Creator: <span data-bind="text: lookupContactName(contactId())"></span></div>

最佳答案

如果您的 <span data-bind="text: lookupContactName(contactId())"></span>在 foreach 循环中,那么您需要在该方法前面加上 $root,否则它将在它循环通过的数组中查找“lookupContactName”。

尝试:

<div>Creator: <span data-bind="text: $root.lookupContactName(contactId())"></span></div>

关于knockout.js - KO 数据绑定(bind) "text:"到带有参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16083884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com