Javascript 使用敲除合并将历史状态对象与构造函数合并

Javascript 使用敲除合并将历史状态对象与构造函数合并,javascript,knockout.js,Javascript,Knockout.js,我在将我的历史状态对象与我拥有的构造函数合并时遇到问题,该构造函数将保存在同一历史状态中以供以后使用 插件示例页面: 使用knockout merge plugin页面中显示的示例,该页面使用类似于我自己的构造函数,我构建了我的代码,但不幸的是,由于我对knockout比较陌生,所以遇到了一些问题 这是knockoutmerge示例中显示的一段代码 function Person() { this.Firstname = ko.observable();

我在将我的历史状态对象与我拥有的构造函数合并时遇到问题,该构造函数将保存在同一历史状态中以供以后使用

插件示例页面:

使用knockout merge plugin页面中显示的示例,该页面使用类似于我自己的构造函数,我构建了我的代码,但不幸的是,由于我对knockout比较陌生,所以遇到了一些问题

这是knockoutmerge示例中显示的一段代码

function Person()
        {
            this.Firstname = ko.observable();
            this.Surname = ko.observable();
        }

function ViewModel()
            {
                this.SimpleExampleModel = new Person();

                this.MergeSimpleExample = function() {
                    var personJson = { Firstname: "James", Surname: "Bond" };
                    ko.merge.fromJS(this.SimpleExampleModel, personJson);
                };
        };

            ko.applyBindings(new ViewModel());
现在我的代码是:

(被推到历史的对象是作为对象的构造器的可观察对象)

建造商:

    var searchTerm = function () {
        this.MinPrice = ko.observable();     
    };


     lbx.vm = {
        term: new searchTerm(),  
        injectHistory: function () {

              // ko.merge.fromJS(this.term, history.state); Doesn't work
             // var json = ko.toJSON(history.state) - Doesn't work
            //var json = JSON.Parse(history.state) - Doesn't work
           //var json = { MinPrice: 222 }; Works
            var json = { "MinPrice": 222 }; // Works

            ko.merge.fromJS(this.term, json);

            console.log("injected");
        }

    };
根据我的测试,您可以看到,每当我尝试将JS对象转换为json时,它都不起作用,但如果我手动构建json,它就会起作用

摆弄我的问题:

正如你在小提琴中看到的,当我弹出状态时,什么都没有发生,可观察的值总是相同的,并且不会抛出任何错误

任何帮助都将不胜感激


提前感谢

最终解决了我的问题,结果是我忘了将构造函数添加到合并中,并且我还对函数进行了双重调用,该函数将对象传递到我的历史状态,并创建了两个

通过更改这两件事修复了此问题


谢谢你抽出时间

一些小提示可以让我们更容易地帮助您。尽量减少代码示例,使其只显示问题。这里有很多视图模型属性和正在进行的事情,我猜它们并不都需要重新编程。此外,明确“不起作用”的含义:错误(哪个?),错误数据,等等?最后,如果您为可读性重新格式化代码(使用实时预览),可能会有所帮助。请注意,您可以编辑您的问题以改进它。我使用单个属性进行编辑以使其更简单。谢谢你的提示!:)