привязка данных из JSON объекта с нокаутом js - Asp. net MVC - PullRequest
0 голосов
/ 19 января 2020

У меня проблема с получением данных от возврата JSON в случае вложенных JSON объектов.

HTML код выглядит так:

<div>
    <h2>List Employee</h2>
    <br />
    <table class="table table-bordered" >
        <thead>
            <tr>
                <td>Id</td>
                <td>Name</td>
                <td>Age</td>
            </tr>
        </thead>
        <tbody data-bind="foreach: Employees">
            <tr>
                <td data-bind="text: Id"></td>
                <td data-bind="text: Name"></td>
                <td data-bind="text: Age"></td>
            </tr>
        </tbody>
    </table>
</div>

затем Knockout JS

function ProductViewModel() {
    var self = this;
    self.Employees = ko.observableArray();`

    $.ajax({
        url: '/Home/GetEmployee',
        cache: false,
        type: 'GET',
        contentType: 'application/json; charset=utf-8',
        data: {},
        success: function (data) {
            self.Employees(ko.mapping.fromJS(data));
        }
    })
} 
var viewModel = new ProductViewModel();
ko.applyBindings(viewModel);`

Контроллер:

public JsonResult GetEmployee()
{
    var employee = db.Employee.ToList();
    return Json(new { data = employee }, JsonRequestBehavior.AllowGet);
}

Json Объект:

`{"data":[{"Id":1,"Name":"Andrew","Age":25},{"Id":2,"Name":"John","Age":28},{"Id":3,"Name":"Layla","Age":24},{"Id":4,"Name":"Mia","Age":26}]}`

Ошибка результата:

Result Error

Кто-нибудь может улучшить мой код, пожалуйста ...

1 Ответ

0 голосов
/ 20 января 2020

Ваш data находится в объекте, поэтому вы должны проанализировать его:

const myData = JSON.parse(data);
self.Employees(ko.mapping.fromJS(myData.data)); //in data is your array

Если вам нужны данные только для отображения, вы можете сделать это без отображения: self.Employees(myData.data);

...