My viewModel имеет массив под названием «Элементы». Я хочу отобразить содержимое «Items», используя привязку foreach. Все работает нормально, когда я использую обычный HTML. Но не работает с диалоговым окном, которое я создал с помощью jQueryUI.Перехват нокаута не работает с диалогом jQueryUI
HTML:
<div id="skus0">
<div id="skus1">
<ul data-bind="foreach: Items">
<li data-bind="text:Name"></li>
</ul>
</div>
<input type="button" id="openQryItems" class="btn btn-info" value="Open" data-bind="click:openQueryItems" />
</div>
JavaScript:
// my view model
var viewModel = {
Items: [{Name:'Soap'},{Name:'Toothpaste'}]
};
// JS to configure dialogue
$("#skus1").dialog({
autoOpen: false,
width: 500,
modal: true,
buttons: {
"OK": function() {
$(this).dialog("close");
},
"Cancel": function() {
$(this).dialog("close");
}
}
});
// for mapping my model using ko.mapping plugin
var zub = zub || {};
zub.initModel = function (model) {
zub.cycleCountModel = ko.mapping.fromJS(model);
zub.cycleCountModel.openQueryItems = function() {
$("#skus1").dialog("open");
}
ko.applyBindings(zub.cycleCountModel, $("#skus0")[0]);
}
zub.initModel(viewModel);
Я создал скрипку здесь my fiddle
@ Matt.kaaj Я должен использовать ko.mapping и пространство имен. моя модель в реальном мире очень большая, и ko.mapping действительно помогает мне в этом. – Harrobbed