Я видел несколько проблем с этим, но я все еще не могу понять, что я делаю неправильно здесь.Knockout.js - Попытка добавить JSON в viewmodel не определена
То, что я пытаюсь сделать, это объект JSON я получаю от сервера, который выглядит следующим образом:
{
"firstname": "Blanchard",
"lastname": "Buckner",
...
}
The View Model делает вызов AJAX, и кажется, что данные настройки будут правильно. Но когда я пытаюсь передать его в мою функцию singleContact для привязки к представлению, ничего не происходит.
Я новичок в Knockout, поэтому я уверен, что делаю довольно легкую ошибку, но я попытался какое-то время понять это, и ничего не работает.
// Binds json db data to each contact.
function singleContact(data) {
var self = this;
self.firstName = data.firstname;
self.lastName = data.lastname;
self.fullName = ko.computed(function() {
return self.firstName + " " + self.lastName;
}, self);
self.image = data.image;
self.position = data.position;
self.company = data.company;
};
function detailViewModel(contactID) {
var self = this;
self.contactID = ko.observable(contactID);
self.contact = ko.observableArray([]);
self.getContact = function(id) {
$.ajax({
type: 'GET',
url: 'http://localhost:3000/contacts/' + id,
dataType: 'json',
success: function(data) {
console.log(singleContact(data)); <---- Always Undefined. The data is a JSON object.
}
});
}
self.getContact(self.contactID());
};
редактировать: А вот разметка, должен был включен, что в первый раз.
<!-- ko foreach: contact -->
<img class="contact__image" data-bind="attr:{src: image, alt: fullName}" />
<h1 data-bind="text: fullName"></h1>
<h2>
<span data-bind="text: position"></span>,
<span data-bind="text: company"></span>
</h2>
<h5>Notes on <span data-bind="text: fullName"></span></h5>
<p></p>
<!-- /ko -->
Вы можете оставить разметку, а так я могу видеть, как указано крепления? –
Andrew, Добавлено. Спасибо, что посмотрели! – xEmptyCanx