我在将历史状态对象与我拥有的构造函数合并时遇到问题,该构造函数保存在相同的历史状态中以供以后使用。
插件示例页面: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/