gpt4 book ai didi

javascript - 如何从 Knockout.js 中删除嵌套对象并同时删除渲染的模板

转载 作者:行者123 更新时间:2023-11-28 01:54:58 26 4
gpt4 key购买 nike

我有以下knockout.js映射代码:

    //JSON string
var startData= {"Name":"SMT","Price":{"Value":22,"Currency":"EUR"}}";

//convert json to model
var viewModel = ko.viewmodel.fromModel(startData);

viewModel.deletePrice= function() {
delete this.Price;
};

ko.applyBindings(viewModel);

然后,我有以下模板,在页面上显示 Price 嵌套对象:

<script type="text/html" id="PriceTemplate">
//render Value and Currency properties from nested object Price
</script>

然后在我的代码中,我将 Price 对象绑定(bind)到 teplate PriceTemplate - 这一切都正常。

<div data-bind="template: { name: 'PriceTemplate', data: Price, templateOptions: { title: 'Prc'} }"></div>

<a href="#" data-bind="click: function() { deletePrice() }">Delete Price</a>

问题出在这个函数deletePrice()。调用时,它会删除嵌套对象 Price,但模板仍以初始数据呈现在页面上。

我的问题 - 如何删除 Price 嵌套对象并同时删除渲染的模板?

最佳答案

我刚刚找到了一个解决方案(using ViewModel knockout extension):

var viewModel = ko.viewmodel.fromModel(startData,{
extend:{
"{root}.Price":function(obj){
return typeof(obj) == "object" ? ko.observable(obj) : ko.observable(null);
}
}
});

viewModel.deletePrice = function() {
this.Price(null);
};

关于javascript - 如何从 Knockout.js 中删除嵌套对象并同时删除渲染的模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19254591/

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