gpt4 book ai didi

knockout.js - 如何使用 knockout 映射插件添加新项目

转载 作者:行者123 更新时间:2023-12-04 16:40:28 24 4
gpt4 key购买 nike

我正在尝试一个 knockout 映射样本,并认为我快到了。我似乎无法向 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 类成员中应用 observables,因此无需将 ko.mapping.fromJS 应用到它。但是我发现,当您有一个需要添加到可观察数组的“原始”json 对象(没有映射)时(即您之前已应用 ko.mapping.fromJS()),您确实需要执行ko.mapping.fromJS 例如

myArray.push(ko.mapping.fromJS(myNewRawJsonItem));  

否则,您的模板绑定(bind)(如果有的话)将提示“TypeError xxxx 不是函数”。

关于knockout.js - 如何使用 knockout 映射插件添加新项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11787640/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com