Javascript KnockoutJS.Mapping.FromJS-可观察数组-删除不工作
使用下面的代码,我希望在ko.mapping.fromJS(response.results,viewModel)时,任何新对象都会添加到viewModel,任何删除对象都会被删除被称为。但它只会添加新对象,而旧对象会保留在html中:Javascript KnockoutJS.Mapping.FromJS-可观察数组-删除不工作,javascript,knockout.js,Javascript,Knockout.js,使用下面的代码,我希望在ko.mapping.fromJS(response.results,viewModel)时,任何新对象都会添加到viewModel,任何删除对象都会被删除被称为。但它只会添加新对象,而旧对象会保留在html中: var viewModel = ko.mapping.fromJS([], { key: function(data) { return ko.utils.unwrapObservable(data.Id);
var viewModel = ko.mapping.fromJS([],
{
key: function(data) {
return ko.utils.unwrapObservable(data.Id);
},
create: function (options) {
return new newConfigModel(options.data);
}
});
var newDispModel = function (data) {
ko.mapping.fromJS(data, {}, this);
this.DisplayTitle = ko.dependentObservable(function() { return GetDisplayTitle(this); }.bind(this));
this.StatusClass = ko.dependentObservable(function () { return GetStatusClass(this); }.bind(this));
this.FeedIndexShadow = "";
this.FeedIndex = ko.dependentObservable(function() { return GetNewFeedIndex(this); }.bind(this));
};
$(document).ready(function () {
function loadConfigurations() {
var url = "/Home/GetItems/";
$.ajax({
url: url,
success: function(response) {
if (response.success)
{
ko.mapping.fromJS(response.results, viewModel);
。。。。最后一部分
<div class="container" id="feeds" data-bind="foreach: viewModel">
<div data-bind="attr: { 'class': StatusClass, 'id': FeedIndex }" style="display: none">
<div class="configRow">
<h2 class="title" data-bind="text: DisplayTitle"/>
</div>
</div>
</div>
我错过了什么?使用键有什么问题吗?,我必须以某种方式手动从可观察对象中删除“死”对象,还是完全误解了可观察对象的功能?下面是一个JSFIDLE,它显示了交互: 注意:映射中的“更新”条目只是为了让我可以登录到控制台。。。除非您需要自定义更新的发生方式,否则不需要它 点击“加载矩阵”,它将显示:
12
23
34
单击“更改”,它将重新加载矩阵:
24
45
查看我发布的控制台消息,您会看到:
Creating 1
Updating 1
Creating 2
Updating 2
Creating 3
Updating 3
Updating 2
Creating 4
Updating 4
这似乎证实了行动正在按预期进行
12 - Is deleted
23 - Is changed to 24
34 - Is deleted
45 - Is added
--
“key”条目通过将特定属性指定为“key”来帮助映射插件确定哪些条目是新的或现有的;否则,将比较整个对象是否相等