Я применяю его только один раз (по крайней мере, я так думаю). И я получаю это сообщение об ошибкеЯ никогда не использовал ko.applyBindings до того, пока еще есть ошибка, говорящая, что я применяю привязки несколько раз к тому же элементу.
Нельзя применять привязки несколько раз к одному элементу.
Проект MVC 5 и WebAPI 2.
Вот упрощенный код:
Это упрощенный макет:
<!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title</title>
</head>
<body>
@RenderBody()
@Scripts.Render("~/scripts/jquery")
@Scripts.Render("~/scripts/bootstrap")
@Scripts.Render("~/scripts/knockout")<!--knockout mapping also included here-->
@Scripts.Render("~/scripts/jqueryval")
@RenderSection("scripts", required: false)
</body>
</html>
вид контакта Контроллер:
@Html.Partial("~/Views/Templates/_ContactList.cshtml")<!--partial view - code is given below -->
@section Scripts {
@Scripts.Render("~/viewmodel/contact")<!--js contact view model- code is given below-->
}
контактный список частичный вид:
<table class="table table-condensed table-hover" data-bind="visible: contacts().length > 0">
<thead>
<tr>
<th>#</th>
<th>Name</th>
<th>Address</th>
<th>City</th>
</tr>
</thead>
<tbody data-bind="foreach: contacts">
<tr data-bind="attr: { 'id': ID }">
<td data-bind="text: $index() + 1"></td>
<td data-bind="text: Name"></td>
<td data-bind="text: Address"></td>
<td data-bind="text: City"></td>
</tr>
</tbody>
вид контакта расслоение плотной модели:
var contactVM = function() {
//api url
var url = "/api/contact";
var self = this;
// list of contacts
self.contacts = ko.observableArray([]);
// single contact
self.contact = ko.observable('');
//contact properties
self.ID = ko.observable('');
self.Name = ko.observable('');
self.Address = ko.observable('');
self.City = ko.observable('');
$('.ajax-loading').show();
$.ajax({
url: url,
type: "GET",
dataType: "json",
contentType: "application/json; charset=utf-8"
}).done(function (data) {
self.contacts(data);
}).fail(function() {
alert("error");
}).always(function() {
$('.ajax-loading').hide();
});
};
$(window).load(function() {
ko.applyBindings(new contactVM());
});
Что я делаю неправильно?