我正在尝试一个淘汰制图样本,我想我已经快完成了。我似乎无法向 viewModel.foos 添加新的 Foo - 谁能看到我在这里错过了什么?
var Foo = function (data) {
var self = this;
self.id = data.id;
self.Name = ko.observable(data.Name);
}
var dataMappingOptions = {
key: function(data) {
return data.id;
},
create: function (options) {
return new Foo(options.data);
}
};
var viewModel = {
foos: ko.mapping.fromJS([]),
loadInitialData: function () {
ko.mapping.fromJS(serverData, dataMappingOptions, viewModel.foos);
},
loadUpdatedData: function () {
ko.mapping.fromJS(serverData, dataMappingOptions, viewModel.foos);
}
};
viewModel.addFoo = function () {
viewModel.foos.push(ko.mapping.fromJS(new Foo()));
viewModel.loadUpdatedData();
}
<ul data-bind="template: {name: 'TopTemplate'}"></ul>
<script type="text/html" id="TopTemplate">
<li><span>Result</span>
<ul data-bind=" template: {name: 'FooTemplate' , foreach: foos} " style="list-style-type:circle;margin-left:15px">
</ul>
</li>
<button data-bind='click: addFoo'>Add Foo</button>
</script>
<script type="text/html" id="FooTemplate">
<li><span data-bind='text: Name'></span>
</li>
</script>
由于原始海报在 Foo 类成员中应用可观察量,因此无需对其应用 ko.mapping.fromJS 。但是我发现,当您有一个“原始”json 对象(没有映射)需要添加到可观察数组(即您之前应用了 ko.mapping.fromJS())时,您实际上需要执行ko.mapping.fromJS 例如
myArray.push(ko.mapping.fromJS(myNewRawJsonItem));
否则你的模板绑定(如果有的话)会抱怨“TypeError xxxx is not a function”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)