Jestem nowy w nokaucie i tworzę aplikację mobilną jquery, która chce uzyskać korzyści z nokautu. Ostatni dzień spędziłem waląc głową w ścianę, by rozwiązać bardzo prosty problem. Od tego czasu usunąłem kod i ręcznie wykonałem ręczne bindowanie (przez co prawie pokonałem cel używania KO przez jquery). W każdym razie, jeśli ktoś mógłby mi pokazać, jak zmienić to, co mam, aby użyć prawdziwej mocy KO, to byłby dla mnie wspaniały punkt wyjścia. Wszelkie przykłady kodu mogłem znaleźć zawsze były o wiele bardziej skomplikowanych problemów niż to (zajmujących się tablice itp)Podstawowe mapowanie JSON z knockoutem do pojedynczego obiektu JSON
Moje JSON:
{"id":9,"fullName":"John Doe","firstName":"John","lastName":"Doe","referenceNumber":"BUY-08","position":"Buyer","type":"Buyer","telephone":"028 82 240780","email":"[email protected]","departmentId":3,"departmentName":"DEPT B","country":"United Kingdom"}
Moje HTML:
<div>
Full Name: <input data-bind="value: fullName" disabled="disabled"/> <br />
Ref: <input data-bind="value: reference" disabled="disabled"/> <br />
Position: <input data-bind="value: position" disabled="disabled"/> <br />
Email: <input data-bind="value: email" disabled="disabled"/> <br />
Dept: <input data-bind="value: departmentName" disabled="disabled"/> <br />
Country: <input data-bind="value: country" disabled="disabled"/> <br />
</div>
Moje javascript:
$(document).ready(function() {
function DetailsViewModel() {
var self = this;
self.fullName = ko.observable("");
self.reference = ko.observable("");
self.email = ko.observable("");
self.position = ko.observable("");
self.departmentName = ko.observable("");
self.country = ko.observable("");
var success = function (data) {
self.fullName(data.fullName);
self.reference(data.referenceNumber);
self.email(data.email);
self.position(data.position);
self.departmentName(data.departmentName);
self.country(data.country);
$.mobile.loading('hide');
};
webAPICall("api/user/getcurrentuser",
"GET", success); // simple wrapper I'm using for ajax calls
}
ko.applyBindings(new DetailsViewModel());
});
Każda pomoc jest bardzo doceniana, dzięki!
Ów prawie dokładnie to, co starałem pierwszym razem .. Różnica jest umieścić na ko.applyBindings w metodzie sukcesu - Miałem to zadeklarowane w document.ready() funkcja, w wyniku czego moje dane nie są wyświetlane. Dzięki! – Shorttylad