Javascript 使用敲除合并将历史状态对象与构造函数合并
我在将我的历史状态对象与我拥有的构造函数合并时遇到问题,该构造函数将保存在同一历史状态中以供以后使用 插件示例页面: 使用knockout merge plugin页面中显示的示例,该页面使用类似于我自己的构造函数,我构建了我的代码,但不幸的是,由于我对knockout比较陌生,所以遇到了一些问题 这是knockoutmerge示例中显示的一段代码Javascript 使用敲除合并将历史状态对象与构造函数合并,javascript,knockout.js,Javascript,Knockout.js,我在将我的历史状态对象与我拥有的构造函数合并时遇到问题,该构造函数将保存在同一历史状态中以供以后使用 插件示例页面: 使用knockout merge plugin页面中显示的示例,该页面使用类似于我自己的构造函数,我构建了我的代码,但不幸的是,由于我对knockout比较陌生,所以遇到了一些问题 这是knockoutmerge示例中显示的一段代码 function Person() { this.Firstname = ko.observable();
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,它就会起作用
摆弄我的问题:
正如你在小提琴中看到的,当我弹出状态时,什么都没有发生,可观察的值总是相同的,并且不会抛出任何错误
任何帮助都将不胜感激
提前感谢最终解决了我的问题,结果是我忘了将构造函数添加到合并中,并且我还对函数进行了双重调用,该函数将对象传递到我的历史状态,并创建了两个 通过更改这两件事修复了此问题
谢谢你抽出时间 一些小提示可以让我们更容易地帮助您。尽量减少代码示例,使其只显示问题。这里有很多视图模型属性和正在进行的事情,我猜它们并不都需要重新编程。此外,明确“不起作用”的含义:错误(哪个?),错误数据,等等?最后,如果您为可读性重新格式化代码(使用实时预览),可能会有所帮助。请注意,您可以编辑您的问题以改进它。我使用单个属性进行编辑以使其更简单。谢谢你的提示!:)