Javascript KnockoutJS.Mapping.FromJS-可观察数组-删除不工作

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);

使用下面的代码,我希望在ko.mapping.fromJS(response.results,viewModel)时,任何新对象都会添加到viewModel,任何删除对象都会被删除被称为。但它只会添加新对象,而旧对象会保留在html中:

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”来帮助映射插件确定哪些条目是新的或现有的;否则,将比较整个对象是否相等