是否有可能以任何方式執行以下操作,而不必通過臨時observables/computed observables?我有其用於查找顯示數據共同數據:KO數據綁定「text:」到具有參數的函數
<span data-bind="text: lookupContactName(31)"></span>
結果:功能exectuded,參數被發現,邏輯確定,並返回計算的全名,但不顯示(可能因爲沒有可觀察的)
<span data-bind="text: lookupContactName(contactId)"></span>
結果:contactId未被解析,因此正確的參數值不可見。
我想這樣工作正常我需要創建自定義綁定?
一般來說:我開始懷疑我的方法是否只加載一次數據並嘗試匹配id是一種好方法。任何意見?我更好地創建加入的數據庫表/視圖/ SP的?
感謝, J.
這裏,是相關代碼段我使用...我會好好學習的jsfiddle爲未來的幫助。
所有警報的是返回預期值...但還是文本數據綁定沒有收到值
一個共同的數據庫:
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>
我只是好奇代碼...這是什麼'lookupContactName'認爲它的參數是,如果你使用'lookupContactName(使用ContactID)'?它只是得到字符串「contactId」? – bdesham
一般而言,這應該起作用。你可以把JSFiddle放在一起來展示你的問題嗎? – nemesv
將lookupContactName(contactId)更改爲lookupContactName(contactId()),這會給出正確的id,而不僅僅是不返回任何東西。感謝您的支持 – jcuypers