के साथ किसी फ़ंक्शन में अस्थायी अवलोकन/गणना किए गए अवलोकनों को पार किए बिना निम्नलिखित करने के लिए किसी भी तरह से संभव है?केओ डेटा-बाध्यकारी "पाठ:" पैरामीटर
<span data-bind="text: lookupContactName(31)"></span>
परिणाम: समारोह exectuded है, पैरामीटर पाया जाता है, तर्क ठीक है, और अभिकलन पूरा नाम दिया जाता है, लेकिन नहीं दिखाया गया है (शायद कोई नमूदार के बाद से)
मैं आम डेटा जो लुकअप डेटा को प्रदर्शित करने के लिए प्रयोग किया जाता है है<span data-bind="text: lookupContactName(contactId)"></span>
परिणाम: contactId पार्स नहीं किया गया है इसलिए सही पैरामीटर मान दिखाई नहीं दे रहा है।
मुझे लगता है कि यह सही तरीके से काम करने के लिए मुझे कस्टम बाइंडिंग बनाने की आवश्यकता होगी?
सामान्य रूप से: मैंने थोड़ा सा संदेह करना शुरू किया कि डेटा लोड करने के लिए मेरा दृष्टिकोण केवल एक बार है और आईडी से मिलान करने का प्रयास एक अच्छा तरीका है। कोई विचार? मैं डीबी टेबल/विचार/एसपी के शामिल होने के बेहतर हूँ?
धन्यवाद, जे
यहाँ, प्रासंगिक कोड टुकड़े मैं उपयोग कर रहा हूँ रहे हैं ... मैं भविष्य की मदद के लिए 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
सामान्य रूप से यह काम करना चाहिए। क्या आप शायद एक जेएसएफडल डाल सकते हैं जो आपकी समस्या का प्रदर्शन करता है? – nemesv
लुकअप लुकअप कॉन्टैक्टनाम (contactId) लुकअप में कॉन्टैक्टनाम (contactId()) यह कुछ भी वापस नहीं करने की बजाय सही आईडी देता है। – jcuypers