我会尽量解释它。
我有一个单页面应用程序,它使用knockout.js将我的viewModel
数据绑定到HTML。
当我使用AJAX提供新的HTML和新的data
时会出现问题。
HTML被正确放置到页面上,数据绑定按预期工作,没有错误。但是,视图模型不会被覆盖,而是会添加新元素。例如:
//initial viewModel before AJAX call:
var viewModel = {
someData: "dataFromInitialPage",
secondData: "someMoreDataFromInitialPage"
}
//viewModel after AJAX call:
var viewModel = {
someData: "dataFromInitialPage",
secondData: "someMoreDataFromInitialPage"
thirdData: "thisDataIsFromAJAX"
}
现在我正在使用ko.mapping.fromJS(data, model);
来更新模型,我理解为什么会发生这种情况(或者我认为,模型正试图根据新数据更新自己)。但我需要的是使模型FORGET具有初始数据并在相同的变量上创建一组全新的数据。我不知道为什么它坚持保留新的HTML内容页面中不再使用的旧信息。
注意:变量实际上不是一个独立变量,它是一个对象的属性,如下所示:
var webApp = {
viewModel: (this variable here),
//some other properties are present here as well
}