У меня есть сложный объект, который я хочу передать в ko.mapping.fromJS
, и моя проблема в том, что я хочу, чтобы одно поле было видимым, но другие свойства встречаются как нулевые или несуществующие на основе методов, которые я пробовал.Сложный объект передан в ko.mapping.fromJS
Я создал jsFiddle here, чтобы проиллюстрировать мою проблему. Я хочу, чтобы внутренний объект был просто скопирован, так как мне не нужно его наблюдать; Я не хочу лишних накладных расходов, учитывая количество из них, которое у меня будет.
Целью этого было бы сделать qty
доступным для редактирования, но inner.name
остаются неизменными в текстовом поле. Это будет означать, что один является наблюдаемым, а другой - нет.
Если у кого-то есть другой способ сделать это, что не связано с картографией, я бы хотел его услышать. Моя модель обзора имеет довольно много функций и таких, и данные поступают от вызова AJAX.
function viewModel() {
var self = this;
self.slots = ko.observableArray([]);
self.load = function() {
ko.mapping.fromJS(
[
{ 'qty': 1, 'inner': { 'name': 'thing'} },
{ 'qty': 2, 'inner': { 'name': 'stuff'} }
],
{ 'include': ['qty'], 'ignore': ['inner.name'] },
self.slots);
}
};
ko.applyBindings(new viewModel());
<button data-bind="click: load">Go</button>
<ul data-bind="foreach: slots">
<li>
<span data-bind="text: qty"></span> <span data-bind="text: inner.name"></span><input data-bind="value: qty" /><input data-bind="value: inner.name" />
</li>
</ul>
совершенны, спасибо! Я попробовал копию, а также создание, но я не понял, что могу сделать то и другое так, как вы указали. Спасибо. – PCasagrande