Knockout.js отображает наблюдаемый объект - PullRequest
0 голосов
/ 22 мая 2018

У меня есть наблюдаемая модель Ticket, которая содержит наблюдаемую пользователем модель, и я хочу отобразить поля Пользователь-> Имя и -> Фамилия.Поля Firstname отображаются правильно, но после того, как я получил ошибку.

HTML

<span data-bind="text: manageLiveTicket.CardID"></span>
<span data-bind="text: manageLiveTicket.UserID"></span>
<span data-bind="text: manageLiveTicket.User().FirstName"></span>

ОШИБКА

    knockout-3.4.2.js:314 Uncaught TypeError: Unable to process binding "text: function(){return manageLiveTicket.User().FirstName }"
Message: Cannot read property 'FirstName' of undefined
    at text (eval at parseBindingsString (knockout-3.4.2.js:280), <anonymous>:3:87)
    at update (knockout-3.4.2.js:448)
    at function.a.B.i (knockout-3.4.2.js:313)
    at Function.Uc (knockout-3.4.2.js:204)
    at Function.Vc (knockout-3.4.2.js:201)
    at Function.U (knockout-3.4.2.js:200)
    at Object.a.m.a.B (knockout-3.4.2.js:193)
    at knockout-3.4.2.js:313
    at Object.r (knockout-3.4.2.js:24)
    at m (knockout-3.4.2.js:306)

ViewModels

LiveTicket

function LiveTicketModel(data) {
    var _self = this;
    this.ID = ko.observable(0);
    this.UserID = ko.observable();
    this.TicketID = ko.observable();
    this.CardID = ko.observable();
    this.User = ko.observable();
    this.Ticket = ko.observable();
    this.StartDate = ko.observable();

    if (data != null) {
        _self.ID(data.ID);
        _self.UserID(data.UserID);
        _self.TicketID(data.TicketID);
        _self.CardID(data.CardID);
        _self.User(data.User);
        _self.Ticket(data.Ticket);
        _self.StartDate(data.StartDate);
    }
}

UserModel

function UserModel(data) {
    var _self = this;
    this.id = ko.observable(0);
    this.Email = ko.observable();
    this.FirstName = ko.observable();
    this.LastName = ko.observable();
    this.UserID = ko.observable();

    if (data != null) {
        _self.id(data.ID);
        _self.Email(data.Email);
        _self.FirstName(data.FirstName);
        _self.LastName(data.LastName);
        _self.UserID(data.UserID);
    }


}
...