我有一个想要传递的复杂对象ko.mapping.fromJS
,我的问题是我只希望一个字段是可观察的,但根据我尝试过的方法,其他属性要么为空,要么不存在。
我在这里创建了一个 jsFiddle来说明我的问题。我希望简单地复制内部对象,因为我不需要它是可观察的;考虑到我将拥有的这些数量,我不想要额外的开销。
这样做的目的是使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>