javascript - 使用 knockout 合并将历史状态对象与构造函数合并

标签 javascript knockout.js

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

插件示例页面:https://rawgit.com/grofit/knockout.merge/master/example.html

使用 knockout 合并插件页面中显示的示例,该页面使用像我自己的构造函数,我已经构建了我的代码,但不幸的是,由于我对 knockout 相对较新,所以我遇到了问题。

这是 knockout 合并示例中显示的一段代码

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,它就会起作用。

摆弄我的问题:https://jsfiddle.net/Badzpeed/05zdLgxh/1/

正如您在弹出状态时在 fiddle 中看到的那样,没有任何反应,可观察值始终相同,并且不会引发任何错误。

如有任何帮助,我们将不胜感激!

提前谢谢您

最佳答案

终于解决了我的问题,事实证明我忘记将构造函数添加到合并中,并且我还对将对象传递到我的历史状态的函数进行了两次调用,从而形成了两个。

通过更改这两件事解决了问题。

感谢您的宝贵时间!

关于javascript - 使用 knockout 合并将历史状态对象与构造函数合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36282069/

相关文章:

javascript - 如何根据 Hammer.js pan 设置 translateX 的样式?

javascript - ObservableArray 未按预期工作

javascript - 使用 jQuery 的 ajax 调用速度慢得令人痛苦

javascript - 使用 jquery 测试 knockout javascript 页面

javascript - 使用 VS 代码调试 Vue.js 应用程序。错误未验证断点

javascript - 圆形碰撞检测 HTML5 Canvas

javascript - 获取 .js 文件中的脚本以加载到 HTML 中

javascript - PassportJS - 在将负载数据作为请求参数传递给 passport.authenticate 之前获取负载数据

javascript - koGrid - 如何以编程方式选择一行

javascript - 使用 html 绑定(bind)显示 ko.observable